建议直接网上看思路....
#include<stdio.h>
int max(int i,int j){
if(i>j) return i;
return j;
}
int maxlength[1001][1001];
int main(){
int n,m;
while(scanf("%d %d",&n,&m)!=EOF){
char c=getchar();//读取换行
char c1[1001];
char c2[1001];
for(int i=0;i<n;i++){
scanf("%c",&c1[i]);
}
char z=getchar();//读取换行
for(int i=0;i<m;i++){
scanf("%c",&c2[i]);
}
for(int i=0;i<n;i++) maxlength[i][0]=0;
for(int i=0;i<m;i++) maxlength[0][i]=0;
for(int i=1;i<n;i++){
for(int j=1;j<m;j++){
if(c1[i-1]==c2[j-1]){
maxlength[i][j]=maxlength[i-1][j-1]+1;
}else{
maxlength[i][j]=max(maxlength[i][j-1],maxlength[i-1][j]);
}
}
}
int maxn=maxlength[0][0];
for(int i=1;i<n;i++){
for(int j=1;j<m;j++){
if(maxlength[i][j]>maxn) maxn=maxlength[i][j];
}
}
printf("%d\n",maxn);
}
return 0;
结果:
标签:return,int,char,DP19,maxn,序列,最长,1001 From: https://www.cnblogs.com/llllmz/p/18021262