动态规划(二)单序列

特点:以字符串居多, f[i] 表示前i 个字符对于这个问题的答案

  1. State: f[i] 表示前 i 个位置/数字/字符, 第 i 个...
  2. Function: f[i] = f[j] ... j 是i 之前的某一个位置
  3. Initialize: f[0]..
  4. 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/

你可能感兴趣的:(动态规划(二)单序列)