一,问题描述
给定两个字符串,求解这两个字符串的最长公共子序列(最长公共序列)比如字符串1:BDCABA;字符串2:ABCBDAB
则这两个字符串的最长公共子序列长度为4,最长公共子序列是:BCBA
二,算法求解
这是一个动态规划的题目对于可用动态规划求解的问题,一般有两个特征:①最优子结构;②重叠子问题
①最优子结构
设X =(x1,x2,..... xn)和Y = {y1,y2,..... ym}是两个序列,将X和Y的最长公共子序列记为LCS(X ,Y)
找出LCS(X,Y)就是一个最优化问题。因为,我们需要找到X和ý中最长的那个公共子序列。而要找X和ÿ的LCS,首先考虑X的最后一个元素和ÿ的最后一个元素。
1)如果xn = ym,即X的最后一个元素与Y的最后一个元素相同,这说明