#include <iostream> #include <cstring> using namespace std; const int N=110; char a[N],b[N]; int f[N][N]; //f[i][j]:a[1~i]和b[1~j]的所有公共子序列的最大值 int main() { cin>>a+1>>b+1;//从下标为1的位置开始存储 int n=strlen(a+1);//计算从1开始的字符串的长度 int m=strlen(b+1); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ f[i][j]=max(f[i-1][j],f[i][j-1]); if(a[i]==b[j]) f[i][j]=max(f[i][j],f[i-1][j-1]+1); } } cout<<f[n][m]<<endl; return 0; }