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;
}
输入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;
}
相关文章推荐
- COdevs1425最长公共子串
- Codevs 1425 最长公共子串
- COdevs1425最长公共子串
- codevs 3160 最长公共子串
- 【CodeVS 3160】最长公共子串
- Codevs 3160 最长公共子串(后缀数组)
- 求两个字符串最长公共子串(LCS问题) 两种思想
- spoj1811 Longest Common Substring(LCS)最长公共子串
- 求两个字符串最长公共子串的问题
- 最长连续公共子串算法
- POJ3080 Blue Jeans(KMP,求最长公共子串)
- 利用后缀数组 前缀 LCP最长公共前缀求第K大的子串
- LintCode : 最长公共子串
- 从最长公共子串到后缀自动机(LCS->SAM)
- 最长公共子序列和最长公共子串区别
- 左神算法 最长公共子串 最长上升子序列
- HDU1503 最长公共子串
- 动态规划--最长公共子串
- 公共字串计算(最长公共子串/序列)C++
- 最长公共子串(LCS)