解題思路:
動態規劃
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char a[205],b[205];
int v[205][205];
while(cin>>a>>b)
{
memset(v,0,sizeof(v));
for(int i=1;i<=strlen(a);i++)
for(int j=1;j<=strlen(b);j++)
{
if(a[i-1]==b[j-1])
{
v[i][j] = max(v[i-1][j-1]+1,v[i-1][j]);
v[i][j] = max(v[i][j],v[i][j-1]);
}
else
{
v[i][j] = max(v[i-1][j-1],v[i-1][j]);
v[i][j] = max(v[i][j],v[i][j-1]);
}
}
cout<<v[strlen(a)][strlen(b)]<<endl;
}
return 0;
}