/* 最长公共子序列: 假定,A=a 1 a 2 …a n 是字母表∑上的一个字符序列,如果存在 ∑上的另外一个字符序列S=c 1 c 2 …c j ,使得对所有的k, k=1,2,…,j,有c k =a ik (其中,1≤ik≤n),是字符序列A的一个 下标递增序列,则称字符序列S是A的子序列。 如果∑={x,y,x}, ∑上的字符序列是A=xyzyxzxz,则xxx是A的 一个长度为3的子序列。该子序列中的字符,对应于A的下 标是1,5,7。而xzyzx是A的长度为5的子序列,对应于A的下 标是1,3,4,6,7. 分析: 令序列A=a1a2...an和B=b1b2...bm,记A=a1a2...ak为A中最前面连续k个字符的子序列, 序列A和序列B的最长公共子序列性质: 1)若an = bm,序列Sk = c1c2...ck是A和B的最长公共子序列,有an = bm = ck, 且序列Sk-1=c1c2...ck-1是序列An-1和Bm-1的长度为k-1的最长公共子序列 2)若an != bm,且an != ck,那么应该将序列A最后字符an排除,用An-1与B进行比较 Sk 是An-1与Bm的长度为k的最长公共子序列 3)若an != bm,且bm != ck,Sk是An与Bm-1的长度为k最长公共子序列 划分状态: 第一阶段:计算A1和Bj的LCS长度L1,j ,j = 1,2,...,m 第二阶段: 计算A2和Bj的LCS长度L2,j ,j = 1,2,...,m ... 第n阶段 :计算An和Bj的LCS长度Ln,j ,j = 1,2,...,m 第n阶段中的Ln,m是序列An和Bm的最