#include<iostream>
#include<string>
using namespace std;
#define N 50
int LCS(char s1[N],char s2[N],int x,int y)
{
int l1,l2,max=0;//x=0,y=0;//_max_最长子串字符数计数 _x_,_y_最长子字符串末尾坐标
l1=strlen(s1);
l2=strlen(s2);
int c[N][N];
for(int i=0;i<=l1;i++)
c[i][0]=0;
for(int j=0;j<=l2;j++)
c[0][j]=0;
for(int i=1;i<=l1;i++)
for(int j=1;j<=l2;j++)
{
if(s1[i-1]==s2[j-1])
{
c[i][j]=c[i-1][j-1]+1;
if(c[i][j]>max)
{
max=c[i][j];
x=i;
y=j;
}
}
else
c[i][j]=0;
}
return max;
}
int main()
{
char s1[N],s2[N];
int x=0,y=0;
cout<<"输入两个字符串:"<<endl;
cin>>s1>>s2;
cout<<LCS(s1,s2,x,y)<<endl;
return 0;
}
最长公共子串
最新推荐文章于 2018-06-26 14:21:59 发布