/*Longest Common Substring*/

#include<iostream>
#include<string.h>
using namespace std;
 
char a[101],b[101],s[101];
int c[101][101];
int i,j,k;
 
void build(int k)
{
int sa= strlen(a);
int sb= strlen(b);
while(k>0)
{
if(c[sa][sb]==c[sa-1][sb])
sa--;
else
if(c[sa][sb]==c[sa][sb-1])
sb--;
else
{
k--;
s[k]=a[sa-1];
sb--;
}
}
}
int main()
{
cout<<"请输入字符串A:"<<endl;
cin>>a;
cout<<"请输入字符串B:"<<endl;
cin>>b;
int sa = strlen(a);
int sb = strlen(b);
for(i=0;i<=sa;i++)c[i][0]=0;
for(i=0;i<=sb;i++)c[0][i]=0;
for(i=1;i<=sa;i++)
{
for(j=1;j<=sb;j++)
{
if(a[i-1]==b[j-1])
c[i][j]=c[i-1][j-1]+1;
else
if(c[i-1][j]>=c[i][j-1])
c[i][j] = c[i-1][j];
else
c[i][j] = c[i][j-1];
}
}
cout<<c[sa][sb]<<endl;
build(c[sa][sb]);
cout<<"最长公共字符子序列是:"<<s<<endl;
return 0;
}