假设有两个序列A={adfs};B={dacd}
当A,B的最后一个元素相同时,则最后一个元素一定在公共子序列里。
而当最后一个元素不同时,如这里的s和d不同,这时有三种情况:
- 两个元素不都在最长公共子序列里面
- s在最长公共子序列里面,d不在
- d在最长公共子序列里面,s不在
不可能同时在里面如果同时在里面的那么这两个元素一定是相等的。
所以递推方程为:
注:由于dp[i-1][j-1]一定比dp[i-1][j]和dp[i][j-1]都要小,所以取max的时候可以不考虑dp[i-1][j-1]。