动态规划的四个组成部分:
- 确定状态
- 最后一步:最优策略中使用的最后一枚硬币,以硬币问题为例!
- 化成子问题,最少的硬币拼出来更小的面值;
- 转移方程
- f(x)=......
- 初始条件和边界情况
- 某些转移方程不能计算出来的值作为初始条件存在;
- 数组不能越界;
- 计算顺序
- f(0),f(1), 需要用到的状态必须先于当前f(x)计算出;
- 一般是按照从小到大的顺序进行计算;
实战经验:
- 动态规划一般是从index=0开始计算的,而且直接关注的是和结果相关的问题;比如说求最大值,那么dp数组标识的每一步都应该是当前最大值;
- dp数组是二维数组还是一维的,看你需要解决的问题类型;
- 动态规划的目的就是为了节省时间,所以前面的每一步肯定是要被利用的;(对于从前往后的计算而言);
- 一定要明确dp数组的含义(具体含义)