引言
动态规划是一个很大的领域,涉及到的问题可能会很复杂,比如怎么如何想到这是一个动态规划问题以及如何确定递推公式?难归难,但是基本的简单动态规划还是需要会的。
动态规划方法论
动态规划,英文:Dynamic Programming,简称DP,动态规划中每一个状态一定是由前面的状态推导出来的。
动态规划解题五步曲:
- 确定dp数组(dp table)以及下标的含义
- 确定递推公式
- dp数组如何初始化
- 确定遍历顺序
- 举例推导dp数组验证
有些情况当前状态只与确定的前几个状态有关,那么我们可以不存储dp数组,改用几个变量维护前几个状态就行
关于DEBUG:
做动规的题目,写代码之前一定要把状态转移在dp数组的上具体情况模拟一遍,心中有数,确定最后推出的是想要的结果。
找问题的最好方式就是把dp数组打印出来,看看究竟是不是按照自己思路推导的!