最长公共自序列(n^2)
#include<bits/stdc++.h>
using namespace std;
string s1,s2;
void Gao()
{
int f[600][600];
int l1=s1.length(),l2=s2.length();
memset(f,0,sizeof(f));
for (int i=1;i<=l1;i++)
for (int j=1;j<=l2;j++)
{
if (s1[i-1]==s2[j-1])
f[i][j]=f[i-1][j-1]+1;
else
f[i][j]=max(f[i][j-1],f[i-1][j]);
}
cout<<f[l1][l2]<<endl;
}
int main()
{
while(cin>>s1)
{
cin>>s2;
Gao();
}
return 0;
}