算法设计与分析——第4章 动态规划

一、动态规划的基本思想

算法设计与分析——第4章 动态规划

算法设计与分析——第4章 动态规划

二、设计动态规划法的步骤

算法设计与分析——第4章 动态规划

三、动态规划问题的特征

算法设计与分析——第4章 动态规划

矩阵连乘积问题

算法设计与分析——第4章 动态规划

算法设计与分析——第4章 动态规划

算法设计与分析——第4章 动态规划

算法设计与分析——第4章 动态规划

算法设计与分析——第4章 动态规划

算法设计与分析——第4章 动态规划

算法设计与分析——第4章 动态规划

分析最优解的结构

算法设计与分析——第4章 动态规划

分析最优解的结构

算法设计与分析——第4章 动态规划

动态规划算法的基本要素

算法设计与分析——第4章 动态规划

算法设计与分析——第4章 动态规划

最长公共子序列

算法设计与分析——第4章 动态规划

最大子段和

¢给定由n个整数(包含负整数)组成的序列a1,a2,...,an,求该序列子段和的最大值。
l当所有整数均为负值时定义其最大子段和为0
¢所求的最优值为:

算法设计与分析——第4章 动态规划

l
l例如,当(a1,a2, ……a7,a8)=(1,-3, 7,8,-4,12, -10,6)时,
最大子段和为:算法设计与分析——第4章 动态规划

01背包问题

算法设计与分析——第4章 动态规划

算法设计与分析——第4章 动态规划

最长单调递增子序列

算法设计与分析——第4章 动态规划

最多拦截导弹

某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它能拦截任意高度的导弹,但是每拦截一发导弹,其拦截能力就下降只能拦截上一次拦截的导弹高度。

某天,雷达捕捉到敌国的导弹来袭,导弹依次飞来,该拦截系统最多能拦截多少导弹呢?

¢Input:

输入若干组数据。每组数据包括:导弹总个数(正整数<1000),导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,用空格分隔)。若导弹个数为0,则处理结束。

¢Output:

输出这套系统最多能拦截多少导弹。

数字三角形问题

算法设计与分析——第4章 动态规划

算法设计与分析——第4章 动态规划