1 #include<stdio.h>
2 #include<string.h>
3 int max(int a,int b)
4 {
5 if(a>=b)return a;
6 else return b;
7 }
8 int main()
9 {
10 int len1,len2,i,j,k,num[600][600];
11 char a[600],b[600];
12 while(scanf("%s%s",a,b)!=EOF)
13 {
14 getchar();
15 len1=strlen(a);
16 len2=strlen(b);
17 memset(num,0,sizeof(num));
18 for(i=1; i<=len1; i++)//二维数组从1开始,避免越界。
19 {
20 for(j=1; j<=len2; j++)
21 {
22 if(a[i-1]==b[j-1])num[i][j]=1+num[i-1][j-1];
23 else num[i][j]=max(num[i-1][j],num[i][j-1]);
24 }
25 }
26 printf("%d\n",num[len1][len2]);
27 }
28 return 0;
29 }