【题目链接】

动态规划,直接看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;
}
}