首页 > 代码库 > 2014网选ZOJPretty Poem(暴力枚举)
2014网选ZOJPretty Poem(暴力枚举)
/*
将给定的一个字符串分解成ABABA 或者 ABABCAB的形式!
思路:暴力枚举A, B, C串!
*/
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<string> 5 6 using namespace std; 7 string str; 8 char ch[55]; 9 int main(){10 int t;11 scanf("%d", &t);12 getchar();13 while(t--){14 char cc;15 int cnt=0;16 scanf("%c", &cc);17 18 while(cc!=‘\n‘){19 if((cc>=‘A‘ && cc<=‘Z‘ || cc>=‘a‘ && cc<=‘z‘))20 ch[cnt++]=cc;21 scanf("%c", &cc);22 } 23 ch[cnt]=‘\0‘;24 str=string(ch);25 int len=strlen(ch);26 bool flag=false;27 for(int i=1; i<len/2; ++i){28 string A=str.substr(0, i);29 for(int j=1; j<len/2; ++j){30 if(i+j>len/2) break; 31 string B=str.substr(0+i, j);32 if(A==B) continue; 33 int ll=i;34 int k=i+j, x;35 36 for(x=0; x<ll && k<len; ++k, ++x)37 if(A[x] != ch[k])38 break;39 if(x==ll){40 k=i+j+i;41 ll=j;42 for(x=0; x<ll && k<len; ++k, ++x)43 if(B[x] != ch[k])44 break;45 if(x==ll){46 47 ll=i;48 k=i+j+i+j;49 for(x=0; x<ll && k<len; ++k, ++x)50 if(A[x] != ch[k])51 break;52 if(x==ll && k==len)53 flag=true;54 if(!flag){55 k=i+j+i+j;56 ll=j;57 int m=len-1;58 for(x=ll-1; x>=0 && m>k; --m, --x)59 if(B[x] != ch[m])60 break;61 if(x==-1){62 ll=i;63 for(x=ll-1; x>=0 && m>k; --m, --x)64 if(A[x] != ch[m])65 break;66 if(x==-1){67 string C=str.substr(k, m-k+1);68 if(A!=C && B!=C) 69 flag=true;70 }71 } 72 }73 }74 }75 }76 }77 if(flag) printf("Yes\n");78 else printf("No\n");79 } 80 return 0;81 }
2014网选ZOJPretty Poem(暴力枚举)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。