题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1238
最主要的是要求字符串的子串,反串,直接用string;
View Code
1 #include<iostream> 2 #include<algorithm> 3 #include<string> 4 using namespace std; 5 int n; 6 string s[111]; 7 8 int cmp(const string p,const string q){ 9 return p.length()<q.length(); 10 } 11 12 int dfs(string &str){ 13 int len=str.length(); 14 int flag=1; 15 for(int i=len;i>=1;i--){ 16 for(int j=0;i+j<=len;j++){ 17 string temp=str.substr(j,i); 18 string t=temp; 19 string retemp=t.assign(t.rbegin(),t.rend()); 20 for(int k=1;k<n;k++){ 21 if(s[k].find(temp)==-1&&s[k].find(retemp)==-1){ 22 flag=0; 23 break; 24 } 25 } 26 if(flag)return temp.length(); 27 flag=1; 28 } 29 } 30 return 0; 31 } 32 33 34 int main(){ 35 int t; 36 scanf("%d",&t); 37 while(t--){ 38 scanf("%d",&n); 39 for(int i=0;i<n;i++){ 40 cin>>s[i]; 41 } 42 sort(s,s+n,cmp); 43 int ans=dfs(s[0]); 44 printf("%d\n",ans); 45 } 46 return 0; 47 }