动态规划笔记
简单定义
动态规划,英文:Dynamic Programming,简称DP。
顾名思义,就是动态推导每一个状态,每一个状态都是由上一个状态推导而来的,这刚好区别于跟动态规划很像的贪心算法,贪心是通过每一步的局部最优解来达到整体最优解,不同状态之间没有联系。
题目分类
动态规划类问题大致可以分为:动规基础,背包问题,打家劫舍,股票问题,子序列问题。
还有一些比较难的比如区间dp,概率dp,这些在专业算法竞赛里也算很难的题目,应对大厂笔试面试的话,掌握上面这些问题就足够了。
文章结尾会放上大佬整理的每一类问题对应的具体题目。
解题步骤
动规五部曲:
- 确定dp数组的定义以及下标的含义
- 递推公式
- dp数组的初始化
- 遍历顺序
- 举例推导dp数组