【题目链接】
动态规划,直接看AC代码。
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char a[300],b[300];
while (cin>>a>>b)
{
int i,j,m=strlen(a),n=strlen(b);
int maxs[300][300];
memset(maxs,0,sizeof(maxs));
for (i=1;i<=m;i++)
{
for (j=1;j<=n;j++)
{
if (b[j-1]==a[i-1])
maxs[i][j]=maxs[i-1][j-1]+1;
else
maxs[i][j]=max(maxs[i][j-1],maxs[i-1][j]);
}
}
cout<<maxs[m][n]<<endl;
}
}