最长公共子序列
题目描述
给你两个字符串,求这两个串的最长公共子序列。
对于字符串abcde
acd,ace, ade等都是子序列,acb不是子序列
输入格式
输入两行,每行包含一个字符串
输出格式
输出一个整数表示最长公共子序列的长度
输入样例
xjoixjoi
joyjoy
输出样例
4
输入样例
xsrrnzkbhzkhzmvkjevsrbdiclckmsgpgngyckzvgysvwcgwayjokqactfxtivfbdwprufivtgg
zhbpvlxfkisdneogdseenjlewrobjhpppjczyxeaiqanaztksnpfwyhdjvipgwzznmnnxwraiiei
输出样例
21
说明/提示
字符串长度小于等于10
CODE
//2019.12.14
#include<bits/stdc++.h>
using namespace std;
int dp[1100][1100];
string a, b, c, d;
int main(){
cin >> c >> d;
int lena = c.length(), lenb = d.length();
a = ' ' + c;
b = ' ' + d;
for(int i = 1; i <= lena; i++){
for(int j = 1; j <= lenb; j++){
if(a[i] != b[j]){
dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
}else{
dp[i][j] = max(dp[i][j], dp[i-1][j-1] + 1);
}
}
}
printf("%d\n", dp[lena][lenb]);
return 0;
}
/*
xjoixjoi
joyjoy
*/
没有未来的未来不是我想要的未来