动态规划(三)双序列

特点:一般给两个字符串

  1. State: f[i][j] 代表了第一个sequence 的前i 个数字/字符, 配上第二个sequence的前 j个...
  2. Function: f[i][j] 研究 第 i 个和第 j 个的匹配关系
  3. Initialize : f[i][0] 和 f[0][j]
  4. Answer : f[n][m]
  • n = len(s1)
  • m = len(s2)

技巧:
状态即是问题的答案
初始化一个二维的动态规划时,就去初始化第0行和第0列

例子:
最长公共子序列 https://leetcode-cn.com/problems/longest-common-subsequence/
编辑距离 https://leetcode-cn.com/problems/edit-distance/
一次编辑 https://leetcode-cn.com/problems/one-away-lcci/
交错字符串 https://leetcode-cn.com/problems/interleaving-string/submissions/

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