理解
递归是自顶向下解决问题,存在重复子问题问题;
动态规划为了解决重叠子问题,增加备忘录,自底向上换个方向遍历解决问题
本质: 空间换时间
一般结果两种情况:
- 最后一个结果就是最值,比如路径问题
- 求出所有结果,在从这些结果求最值,比如最长递增子序列
套路:
- 明确状态 && 选择
- 定义dp数组 & 初始化
- 根绝选择,确定状态转移方程
可解决题型如下最值问题:
- 爬楼梯
- 路径问题
- 子系列 — 子序列解题模板:最长回文子序列
- 背包问题 — https://leetcode.cn/problems/ones-and-zeroes/solution/gong-shui-san-xie-xiang-jie-ru-he-zhuan-174wv/

- 股票买卖问题
- 打家劫舍问题
- 等等