问题:例如:X={A,B,C,B,A,D,B},Y={B,C,B,A,A,C},那么,二者的最长公共子序列是{B,C,B,A},长度为4。
我们首先需要搞清楚以下两个概念:
最长公共子序列 VS 最长公共子串:
找两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。而最长公共子序列则并不要求连续。
上述问题中的最长公共子序列与最长公共子串是一样的。
但是再举例X={A,B,C,B,A,D,B},Y={B,C,B,A,A,B},二者的最长公共子序列是{B,C,B,A,B},而二者的最长公共子串是{B,C,B,A}。
求解思路:
1.分析最优解的结构特征:
设Zk={z1,z2,z3,......zk}是Xm={x1,x2,x3,......xm}和Yn={y1,y2,y3,......yn}的最长公共子序列。
则可以得到:
若xm=yn=zk,那么Zk-1={z1,z2,z3,......zk-1}是Xm-1={x1,x2,x3,......xm-