求最长上升子序列, 要求 n方 就可以。
用dp[i][j] 表示 s1 已经匹配了 i 个字符, s2 已经匹配了 j 个字符的最优解。
考虑转移:
如果 s1[i] == s2[j],那么就对答案贡献了1个, 即 dp[i][j] = dp[i-1][j-1] + 1;
否则, 就是匹配失败, 我们从i-1, j-1 里找个最优状态转移, 即 dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
dp[n][m] 为答案。
求最长上升子序列, 要求 n方 就可以。
用dp[i][j] 表示 s1 已经匹配了 i 个字符, s2 已经匹配了 j 个字符的最优解。
考虑转移:
如果 s1[i] == s2[j],那么就对答案贡献了1个, 即 dp[i][j] = dp[i-1][j-1] + 1;
否则, 就是匹配失败, 我们从i-1, j-1 里找个最优状态转移, 即 dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
dp[n][m] 为答案。