1 #include<stdio.h>
2 #include<string.h>
3 #include<algorithm>
4 using namespace std;
5 int main()
6 {
7 int N,i,j,sum,k,l,m[1005],x;
8 char s[1005],ss[1005];
9 scanf("%d",&N);
10 while(N--)
11 {
12 sum=0;
13 memset(m,0,sizeof(m));
14 scanf("%s %s",s,ss);
15 l=strlen(s);k=strlen(ss);
16 for(i=0;i<l;i++)
17 {
18 x=0;
19 for(j=0;j<k;j++)
20 {
21 sum=m[j+1]; //sum记录m[j+1](当前位置对应的数组的位置)改变之前的值
22 if(s[i]==ss[j]) m[j+1]=x+1; //用j+1的原因是当j=0时,如果不满足这个条件,则会执行下一个语句,
23 else m[j+1]=max(m[j],m[j+1]);//这时要和它前面一个比较,因为j!=-1,所以只能往后移一位
24 x=sum;//将sum值赋值给x,以便循环到下个位置的时候使用
25 }
26 }
27 printf("%d\n",m[k]);
28 }
29 }