公共子序列

 基本思想与 编辑距离 一致。

 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 }