- 两个字符串, 所以二维
- dp[i][j] 一般与dp[i - 1][j - 1], dp[i][j - 1] 和 dp[i - 1][j - 1]有关, 找到规律即可
- 双序列一般可以用滚动数组优化
- 画矩阵
- 求方案总数一般都是拿子问题方案取和
empty string is a subsequence of any string but only 1 time
做这类型的题, 不能只看最后一步, 然后自己去臆想方程. 因为很可能理解错了最后一步与前一步的关系
需要举一个小例子, 一边画矩阵, 一边去观察 if s1[i] == s2[j] 以及 s1[i] != s2[j] 的情况. 这样子得到的关系式才比较容易正确
画矩阵前, 定义好状态. 如果有三个部分组成的三维状态, 要去检查第三个状态是否依赖于第一第二个状态, 并且如何由第一第二个状态推出第三个状态. 这样子我们便能够减少一个维度. 往往i, j, k. 我们只需要 i + j = k的状态
画矩阵的时候,
先推断第一行第一列的初始化表达式
直接到最后一步推出表达式
画完矩阵, 验证表达式
修改表达式
题目
- Longest Common Subsequence
- Edit Distance
- 如果和长度扯上关系就会变成贪心
- Distinct Subsequence
- Interleaving String
