一、知识点整理
(一)、动态规划是解决多阶段策略问题的一种方法,运用最优性原理,排除重复计算,用空间换时间的算法。
(二)、动态规划适用的题目类型有以下几个特点:
1.问题具有多阶段的决策
2.每个阶段对应一个状态(状态变量)
3.每个阶段有一个决策(不同的决策导致下一个阶段不同的状态)
4.每个阶段的最优解可以递归地归结为下一个阶段各个可能状态的最优解问题
(三)、一般的解题步骤
1.判断问题是否具最优子结构性质者
2.分阶段
3.建立状态转移方程(递归公式)
4.找出边界条件
5.将已知的边界值带入方程
6.递归求解
(四)、背包问题
1、01背包
特点:每种物品仅有一件,可以选择放或不放,求最大价值
状态转移方程:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]};
伪代码:(空间优化)
for i=1..N
for v=v..0
f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}
(若要求恰好装满背包,初始化的时候除了将f0]=0,其余的均为负无穷;
若没有要求必须装满,初始化的时候将f[0...v]都设成0)<