1.关键点:①状态定义 ②状态定义方程
2.核心逻辑和递归一样,把大问题拆成小问题。
3.盘逻辑时,可以借助递归树。
4.注意数组定义,分清是“第i个”还是“前i个”。
5.本质是对回溯进行优化:
回溯的时间复杂度为指数级,因为重复计算了某些结果,容易超时。
动态规划把递归的计算结果保存下来,再遇到时直接用。
6.时间复杂度=状态个数*单个状态计算所需时间=O(n)
空间复杂度=O(n)
7.递归搜索+保存计算结果=记忆化搜索
8.对于递归树:
自顶向下算->记忆化搜索
自底向上算->递推(可以把空间复杂度简化为O(1))
9.适合求所有解的情况。