您的位置:首页 > 其它

codevs1425最长公共子串(STL)

2017-10-21 10:50 162 查看
题目描述 Description

输入N(2<=N<=20)个字符串,输出最长公共子串。

输入描述 Input Description

输入N
再输入N个字符串

输出描述 Output Description

输出最大公共子串。

样例输入 Sample Input

3
abce
cabk
jaab

样例输出 Sample Output

ab

数据范围及提示 Data Size & Hint

乍一看以为是动态规划,然而不会用动态规划。

#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
string str[25];
cin>>n;
int min_len=INT_MAX;
for(int i=0;i<n;i++){
cin>>str[i];
if(str[i].size()<min_len)min_len=str[i].size();
}
if(n==1){
cout<<str[0];
return 0;
}
for(int i=min_len;i>=0;i--){
for(int j=0;j<str[0].size()-i;j++){
int flag=1;
for(int k=1;k<n;k++)
if(str[k].find(str[0].substr(j,i))==string::npos)
flag=0;
if(flag){
cout<<str[0].substr(j,i);
return 0;
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  codevs