题目链接:问题 A: 最长公共子序列
题目难度:两颗半星
题目大意:给出两个序列,要求给出字符串的最长公共子序列的长度
题目坑点:无。。简单dp
代码如下:
#include<iostream>
#include<stdlib.h>
#include<queue>
#include<stack>
#include<algorithm>
#include<map>
#include<cstring>
using namespace std;
int dp[110][110];
int main(){
fill(dp[0],dp[0]+110*110,0);
char a[110],b[110];
while(scanf("%s %s",&a,&b)!=EOF){
for(int i=1;i<=strlen(b);i++){
dp[0][i]=0;
}
for(int i=1;i<=strlen(a);i++){
dp[i][0]=0;
}
int maxlen=0;
for(int i=1;i<=strlen(a);i++){
for(int j=1;j<=strlen(b);j++){
if(a[i-1]==b[j-1]){
dp[i][j]=dp[i-1][j-1]+1;
}
else{
dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
}
if(dp[i][j]>maxlen)
maxlen=dp[i][j];
}
}
cout<<maxlen<<endl;
}
}