#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN = 1010;
char s1[MAXN], s2[MAXN];
int maxLen[MAXN][MAXN]; // 确定状态maxLen
int main()
{
cin >> s1 >> s2;
int len1 = strlen(s1);
int len2 = strlen(s2);
for (int i = 0; i <= len1; i++) // 初始状态maxLen[i][0] = 0
maxLen[i][0] = 0;
for (int i = 0; i <= len2; i++)
maxLen[0][i] = 0;
for (int i = 1; i <= len1; i++)
{
for (int j = 1; j <= len2; j++)
{
if (s1[i] == s2[j]) //状态转移方程
maxLen[i][j] = maxLen[i - 1][j - 1] + 1;
else
maxLen[i][j] = max(maxLen[i-1][j],maxLen[i][j-1]);
}
}
cout << maxLen[len1][len2] << endl;
system("pause");
return 0;
}
12-29