题解 2129: 信息学奥赛一本通T1265- 最长公共子序列

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

优质题解

最长公共子序列--动态规划

###解题思路:子序列的问题一般运用动态规划,又由于涉及到两个字符串,所以使用二维dp数组确定了方法后就是经典的动归五部曲了:-**明确dp数组的定义**:dp[i][j]以x[1~i]的字符串和以y[1~j]的字符串的LCS-**确定状态转移方程**:**依旧是数学归纳法的思想,

最长公共子序列(java)

可通过画二维数组结合公式做此题-先创建二维数组arr,arr[i][0]和arr[0][j]置为0-二维数组的行和列看作要比的字符串,从1开始-遍历二维数组,对各个字符串进行比较-**字符串相同:拿对应数组斜线值+1:c[i][j]=c[i-1][j-1]+1;**-**不同:就比较左边和上边值大小:
优质题解

信息学奥赛一本通T1265- 最长公共子序列-题解(C++代码)附一个求全部序列的题解

输出一个最长公共子序列并不难(网上很多相关代码),难点在于输出所有的最长公共子序列,因为LCS通常不唯一。总之,我们需要在动态规划表上进行回溯从dp[m][n],即右下角的格子,开始进行判断:如果格子dp[i][j]对应的s1[i-1]==s2[j-1],