1. 两个字符串, 所以二维
  2. dp[i][j] 一般与dp[i - 1][j - 1], dp[i][j - 1] 和 dp[i - 1][j - 1]有关, 找到规律即可
  3. 双序列一般可以用滚动数组优化
  4. 画矩阵
  5. 求方案总数一般都是拿子问题方案取和
  6. empty string is a subsequence of any string but only 1 time

  7. 做这类型的题, 不能只看最后一步, 然后自己去臆想方程. 因为很可能理解错了最后一步与前一步的关系

  8. 需要举一个小例子, 一边画矩阵, 一边去观察 if s1[i] == s2[j] 以及 s1[i] != s2[j] 的情况. 这样子得到的关系式才比较容易正确

    1. 画矩阵前, 定义好状态. 如果有三个部分组成的三维状态, 要去检查第三个状态是否依赖于第一第二个状态, 并且如何由第一第二个状态推出第三个状态. 这样子我们便能够减少一个维度. 往往i, j, k. 我们只需要 i + j = k的状态

    2. 画矩阵的时候,

      1. 先推断第一行第一列的初始化表达式

      2. 直接到最后一步推出表达式

      3. 画完矩阵, 验证表达式

      4. 修改表达式

题目

  1. Longest Common Subsequence
  2. Edit Distance
    1. 如果和长度扯上关系就会变成贪心
  3. Distinct Subsequence
  4. Interleaving String

results matching ""

    No results matching ""