一、题目说明:
有字符序列A=xyzzyxzyxxyx,B=zyxxyyzyxyzy,求A、B的最长公共子序列。(输出最优值与最优解)
二、思路说明:
算法的核心思想有点类似于合并两个有序的子序列;使用一个“指针”从子序列1起点开始,用于指代其中的元素,使用另一个“指针”从子序列2的起点开始,用于指代其中的元素;然后比较其大小,插入到新的序列中。
但该算法不同的地方在于:利用数组的下标替代了上面“指针”,然后也不是比较大小,而是比较是否相等。因为两组序列中的任何两个元素可能发生比较,所以利用二维数组表示所有的比较可能。
在元素进行具体比较的时候,元素相等时,两个序列待处理的元素都减少一个,当元素不相等的时候,就有两种选择了,帮助我们抉择的点就是哪条“路”已产生的公共元素更多。
这就进一步要求我们在具体求解的过程中,既需要知道前面已经求解的公共元素个数,还需知道已经走过的求解路径。因此我们在整个求解过程中借助了两个二维数组,一个用来积累你的局部最优解,一个用不同的数字来表示