一、适用问题:
有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法
二、思想:
用于优化递归问题,如斐波那契数列,可以减少计算量
动态规划仅仅解决每个子问题一次,具有天然剪枝功能,从而减少计算量
某个给定子问题已算出,则将其存储,以便解决下一个相同子问题时直接查表
三、步骤:
- 确定动态规划状态
- 写出状态转移方程
- 考虑初始化条件
- 考虑输出状态
- 考虑对时间、空间复杂度的优化
四、学习资料:
https://people.cs.clemson.edu/~bcdean/dp_practice/