给定两个序列x和y,称z是x和y的公共子序列,如果z既是x的子序列,又是y的子序列;最长的公共子序列称作最长公共子序列LCS(longest common subsequence)。
4.1 求解步骤
(1)LCS的最优子结构
设zk是xm和yn的一个LCS,则,如果x和y的最后一个元素相同,则z中去掉最后一个元素之后zk-1仍为xm-1和yn-1的LCS
如果xm!=yn,若zk!=xm,则z是xm-1和y的一个LCS,若zk!=yn,则z是xm和yn-1的LCS。
(2)一个递归解
设c[i][j]为序列xi和yj的一个LCS的长度,则有:
c[i][j]=0 i=0或j=0
c[i][j]=c[i-1][j-1]+1 xi=yj且i,j>0