特点:以字符串居多, f[i] 表示前i 个字符对于这个问题的答案
- State: f[i] 表示前 i 个位置/数字/字符, 第 i 个...
- Function: f[i] = f[j] ... j 是i 之前的某一个位置
- Initialize: f[0]..
- Answer: f[n]..
- 一般answer是f[n]而不是f(n-1), 因为对于n个字符, 包含前0个字符(空串),前1 个字符 .. .前 n 个 字符
技巧:
如果不是跟坐标相关的动态规划,一般有N个字符,就开N+1个位置的数组,第0 个位置单独留出来做初始化
例子:
分割回文串II https://leetcode-cn.com/problems/palindrome-partitioning-ii/
最长上升子序列https://leetcode-cn.com/problems/longest-increasing-subsequence/
最长等差数列 https://leetcode-cn.com/problems/longest-arithmetic-sequence/
最长定差 子序列:https://leetcode-cn.com/problems/longest-arithmetic-subsequence-of-given-difference/
整数拆分 https://leetcode-cn.com/problems/integer-break/
完全平方数 https://leetcode-cn.com/problems/perfect-squares/