区别在最长公共子序列可以是不连续的,子串是连续的。 解法有递归和动态规划等。
假设有序列A,和序列B。 最长公共子串递推公式如下:
- dp[i][j] = 0 ( i == 0 或 j == 0 )
- dp[i][j] = dp[i-1][j-1]+1 ( i>0 , j>0且Ai == Bj )
- dp[i][j] = max( dp[i][j-1] , dp[i-1][j] ) ( i>0 , j>0且Ai != Bj ) 最长公共子串递推公式如下:
- dp[i][j] = 0 ( i == 0 或 j == 0 )
- dp[i][j] = dp[i-1][j-1]+1 ( i>0 , j>0且Ai == Bj )
- dp[i][j] = 0 ( i>0 , j>0且Ai != Bj )
原文链接:blog.csdn.net/a515557595_… 这里贴一个在github上找到的代码,代码包括了将找到的最长公共子序列打印功能,但是有个小bug知道怎么改,留着以后再看。 这里贴个github代码,侵删。github.com/xyu5958/stu…
当我用这个例子时,最长公共子序列应该有13和23,但是只会打印出来一个。