动态规划
动态规划的核心:寻找到转移方程(将问题进行层次化解剖, 将一个大问题分级为一步一步的小问题,并注意考虑这一步的停止条件)
动态规划的三种模式:
- 递归
- 备忘录
- 递推
动态规划使用条件:
- 最优子结构
- 重叠子问题(如果没有重叠 => 暴力搜索/递归)
基本模型:
- 线性模型(又可分为单情况迭代以及多情况迭代【可能分奇偶】):
- 切割钢条
- 小朋友过桥问题(最后之所以要分两次是因为不知道最快的那个人在哪边)
-
区间模型
- 背包模型
记忆化搜索、序列dp、状压dp、状态机dp、数位dp…… (参考Home · SharingSource/LogicStack-LeetCode Wiki (github.com))