题目大意:
给出两个字符串,求出这样的一个最长的公共子序列的长度:子序列中的每个字符都能在两个原串中找到,而且每个字符的先后顺序和原串中的先后顺序一致。
如:
ABCBDAB
BDCABA
它们的最长公共子序列就是 BCBA,长度为4。
#include<iostream>
#include<cstring>
using namespace std;
char sz1[1000];
char sz1[1000];
int maxLen[1000][1000];
int main(){
while(cin>>sz1>>sz2){
int length1 = strlen(sz1);
int length2 = strlen(sz2);
int nTmp;
int i,j;
//设置边界条件
for(i=0;i<=length1;i++){
maxLen[i][0] = 0;
}
for(j=0;j<=length2;j++){
maxLen[0][j] = 0;
}
for(i=1;i<=length1;i++){
for(j=1;j<=length2;j++){
if(sz1[i-1] == sz2[i-1])
maxLen[i][j] = maxLen[i-1][j-1]+1;
else
maxLen[i][j] = max(maxLen[i][j-1],maxLen[i-1][j]);
}
}
} cout<<maxLen[length1][length2]<<endl;
return 0;
}
有什么不懂可以在评论区问我,我会及时回答的,感谢阅读,希望能帮到您!