#include<iostream>
using namespace std;
void LCS(char A[],char B[],int n,int m)
{
int L[200][200];
int i,j;
for(i=0;i<=n;i++)
L[i][0]=0;
for(j=0;j<=m;j++)
L[0][j]=0;
for(i=0;i<=n;i++)
{
for(j=0;j<=m;j++)
if(A[i-1]==B[j-1])
L[i][j]=L[i-1][j-1]+1;
else L[i][j]=( (L[i][j-1]>L[i-1][j])?L[i][j-1]:L[i-1][j] );
}
for(i=0;i<=n;i++)
{
for(j=0;j<=m;j++)
cout<<L[i][j]<<" ";
cout<<endl;
}
cout<<"最长公共子序列的长度是"<<L[n][m]<<endl;
}
int main(int argc, char* argv[])
{
char A[200],B[200];
int lenA,lenB;
cout<<"请输入字符串A"<<endl;
cin>>A;
cout<<"请输入字符串B"<<endl;
cin>>B;
lenA=strlen(A);
lenB=strlen(B);
LCS(A,B,lenA,lenB);
return 0;
}