简单dp: #include<stdio.h> #include<string.h> #define max 1010 char a[max],b[max]; int c[max][max]; main() { int i,j; while(scanf("%s%s",a+1,b+1)>0) { int l1=strlen(a+1); int l2=strlen(b+1); for(i=0;i<=l1;i++) c[i][0]=0; for(i=0;i<=l2;i++) c[0][i]=0; for(i=1;i<=l1;i++) { for(j=1;j<=l2;j++) { if(a[i]==b[j]) c[i][j]=c[i-1][j-1]+1; else { if(c[i][j-1]>c[i-1][j]) c[i][j]=c[i][j-1]; else c[i][j]=c[i-1][j]; } } } printf("%d/n",c[l1][l2]); } }