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 }