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.
2 3 ABCD BCDFF BRCD 2 rose orchid
2 2
题意:找出字符串的最长连续公共子串
#include <iostream> #include <string> #include <algorithm> using namespace std; int main() { int t,n; string str[101]; cin>>t; while(t--) { int ok=0; int x,minn=101,maxx=0; cin>>n; for(int i=0;i<n;i++) { cin>>str[i]; //reverse(str[i].begin(),str[i].end()); if(str[i].length()<minn) { minn=str[i].length(); x=i; } } //cout<<minn<<endl; for(int i=str[x].length();i>0;i--) { for(int j=0;j<str[x].length()-i+1;j++) { int l; string str1=str[x].substr(j,i); string str2=str1; reverse(str2.begin(),str2.end()); for(l=0;l<n;l++) { if(str[l].find(str1)==-1&&str[l].find(str2)==-1) break; } if(l==n) { maxx=str1.length(); ok=1; break; } } if(ok) break; } cout<<maxx<<endl; } return 0; }