1基本思想: 将待解决问题分解成若干个子问题,先求解子问题,然后从这些子问题的解中得到原问题的解
2条件:
1)拥有最优子结构 (optimal substructure)
2)有重叠子问题(overlapping subproblems)
3 (4点要素)一个老师的总结:
1)状态(state):例如 dp 问题中经常会用的 f [ i ] [ j ] 这种 用来表示跟 i 和 j 相关的一个子问题的解(即:用来存储子问题的结果)。
2)方程(function):来表示状态之间的联系。即: 如何通过子问题的解得到大问题的解。
3)初始化(initialization):初始化一些边界状态, 即:表示 最极限 子问题的解
4)答案(answer):最大的那个状态是什么
Leetcode 题目:
关于matrix 的dp 问题,这几道题可以放一起做
1 triangle
2 unique path
3 unique path II
4 minimum path sum