您的位置:首页 > 编程语言 > C语言/C++

HDOJ1238 C++字符串函数水题

2017-08-23 22:07 260 查看


Substrings

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 10797    Accepted Submission(s): 5167


Problem Description

You are given a number of case-sensitive strings of alphabetic characters, find the largest string X, such that either X, or its inverse can be found as a substring of any of the given strings.

 

Input

The first line of the input file contains a single integer t (1 <= t <= 10), the number of test cases, followed by the input data for each test case. The first line of each test case contains a single integer n (1 <= n <= 100), the number of given strings,
followed by n lines, each representing one string of minimum length 1 and maximum length 100. There is no extra white space before and after a string. 

 

Output

There should be one line per test case containing the length of the largest string found.

 

Sample Input

2
3
ABCD
BCDFF
BRCD
2
rose
orchid

 

Sample Output

2
2

 

Author

Asia 2002, Tehran (Iran), Preliminary

 

Recommend

Eddy   |   We have carefully selected several similar problems for you:  1239 1015 1401 1515 1597 

主要是数据太水了。。。

#include <ctime>
#include <iostream>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;

const int maxn = 105;
int n,i,j,k;
string str[maxn];

bool cmp(string a, string b) {
return a.length()<b.length();
}

void init(){
cin >> n;
for (i=1; i<=n; i++) cin >> str[i];
sort(str+1,str+n+1,cmp);
}

int Find(){
int tmp,len;
bool flag;
string s = str[1];
len = s.length();
string temp,retmp;

for (i=len; i>=1; i--) {
for (j=0;j+i<=len; j++) {
flag = 1;
temp = s.substr(j,i); //从第j位开始复制长度i的字符串
retmp = temp;
reverse(retmp.begin(),retmp.end()); //反转

for (k=2; k<=n; k++)
if (str[k].find(temp)==-1 && str[k].find(retmp)==-1) {
flag = 0;
break;
}
if (flag) return i;
}
}
return 0;
}

int main(){
std::ios::sync_with_stdio(false);
int t;
cin >> t;
while (t--) {
init();
cout << Find() << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: