点击打开链接
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
int Maxlen[1005][1005];
int main()
{
int N=0,len1=0,len2=0,i=0,j=0;
char s1[1005]={'\0'},s2[1005]={'\0'};
scanf("%d",&N);
while(N--)
{
memset(s1,'\0',sizeof(s1));
memset(s2,'\0',sizeof(s2));
scanf("%s",s1+1);
scanf("%s",s2+1);
len1=strlen(s1+1);
len2=strlen(s2+1);
for(i=0;i<=len1;i++)
Maxlen[i][0]=0;
for(j=0;j<=len2;j++)
Maxlen[0][j]=0;
for(i=1;i<=len1;i++)
{
for(j=1;j<=len2;j++)
{
if(s1[i]==s2[j])
{
Maxlen[i][j]=Maxlen[i-1][j-1]+1;//二维数组的动态规划
}
else
{
if(Maxlen[i-1][j]>Maxlen[i][j-1])
Maxlen[i][j]=Maxlen[i-1][j];
else
Maxlen[i][j]=Maxlen[i][j-1];
}
}
}
printf("%d\n",Maxlen[len1][len2]);
}
return 0;
}