#include <iostream>
#include <vector>
using namespace std;
int main()
{
string a="wenkingXXXXXxingbeng";
string b="goodbengwenpumpkingXXXXXXXX";
cout<<"string1="<<a<<endl;
cout<<"string2="<<b<<endl;
cout<<endl;
int dp[a.size()][b.size()];
//用来记录a字符串中,重复次数最高的那个值
vector<int> maxSet;
int maxLength=0;
for(int i=0; i<a.size(); i++)
{
for(int j=0; j<b.size(); j++)
{
if(a[i]==b[j])
{
if(i>0&&j>0)
{
dp[i][j]=dp[i-1][j-1]+1;
}else
{
dp[i][j]=1;
}
if(dp[i][j]>maxLength)
{
maxLength=dp[i][j];
maxSet.clear();
maxSet.push_back(i);
}else if(dp[i][j]==maxLength)
{
maxSet.push_back(i);
}
}
else
{
dp[i][j]=0;
}
}
}
for(int i=0; i<a.size(); i++)
{
for(int j=0; j<b.size(); j++)
{
cout<<dp[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
vector<int>::iterator it;
for(it=maxSet.begin(); it!=maxSet.end(); ++it)
{
cout<<"LSC:";
for(int i=*it-maxLength+1; i<=*it ;i++)
{
cout<<a[i];
}
cout<<endl;
}
return 0;
}
【day-3】最大公共子串
最新推荐文章于 2023-02-27 21:05:55 发布