基本思想与 编辑距离 一致。
1 #include<iostream> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int N=205; 6 int f[N][N]; 7 8 int main(){ 9 string s1,s2; 10 while(cin>>s1>>s2){ 11 int l1=s1.length(),l2=s2.length(); 12 memset(f,0,sizeof(f)); 13 for(int i=1;i<=l2;i++){ 14 for(int j=1;j<=l1;j++){ 15 f[i][j]=f[i-1][j-1]+(s2[i-1]==s1[j-1]?1:0); 16 f[i][j]=max(f[i][j],max(f[i-1][j],f[i][j-1])); 17 } 18 } 19 cout<<f[l2][l1]<<endl; 20 } 21 return 0; 22 }