Dynamic Programming
根据九章算法的讲义,动态规划问题主要分为6种情况:
1. 坐标型动态规划
2. 序列型动态规划
3. 双序列型动态规划
4. 划分型动态规划
5. 背包型动态规划
6. 区间型动态规划
其中前三种在九章算法班中有讲解,后三种在九章算法高级班中涉及。
主要在下列3种情况下使用到动态规划:
1. 求最大值或者最小值
2. 判断方案是否可行
3. 统计方案的个数
动态规划问题有4点要素:
1. 状态 state,也就是f[i]或者f[i][j]的物理意义是什么
2. 方程 function,也就是f[i]和f[i - 1]的关系
3. 初始化 initialization,这个方程涉及2个相邻state所以对于state 0肯定是需要初始化的
4. 答案 最大的状态是什么?规划的重点是什么?