动态规划:动态规划常见基础题目之一。
官方的解释是:
????????动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。
?我的理解:
? ? ? ? 动态规划总是体现在当前状态由前面的状态推导而来,前面的状态由更前面的状态推导。最开始的状态由定义给出,按照递推公式一步一步推导到当前状态。
? ? ? ? 动态规划=给定起始+按照一定规律逐步推导到下一位置状态。
常见题型:
- 斐波那契数列、爬楼梯问题
- 完全背包、背包问题
- 打家劫舍(树形DP)
- 股票问题
- 子序列问题
拔尖题型:
- 区间DP 、概率DP
- 明确dp数组及下标的含义。
- 确定递推公式,但是递推公式只是动态规划的一部分,而非全部
- dp数组初始化
- 确定遍历顺序:从前往后?从后往前?
- 打印dp数组, 用于debug验证等。
代码实现的步骤与思路的步骤是有区别的:
- ? ? ? ? 定义dp数组
- ? ? ? ? 初始化数组
- ? ? ? ? 遍历
- ? ? ? ? 递推公式
题型识别: 给定初始状态,后面的状态总是由前面的状态决定。
解题步骤:动态规划五部曲:dp[i]含义、递推公式、初始化、遍历顺序、打印debug
掌握方式:多题练习