水题 。
#include<bits/stdc++.h> using namespace std; int T,n; char buf[55]; string s; bool ok = false; bool ok1(int a,int b) { string s1,s2; s1 = s.substr(0,a); s2 = s.substr(a,b); string buf; if(s1 == s2) return false; buf = s.substr(a+b,a); if(buf != s1) return false; buf = s.substr(a+b+a,b); if(buf != s2) return false; buf = s.substr(a+b+a+b,a); if(buf != s1) return false; return true; } bool ok2(int a,int b,int c) { string s1,s2,s3; s1 = s.substr(0,a); s2 = s.substr(a,b); s3 = s.substr(a+b+a+b,c); string buf; if(s1 == s2 || s1 == s3 || s2 == s3) return false; if(s1 == s2) return false; buf = s.substr(a+b,a); if(buf != s1) return false; buf = s.substr(a+b+a,b); if(buf != s2) return false; buf = s.substr(a+b+a+b,c); if(buf != s3) return false; buf = s.substr(a+b+a+b+c,a) ; if(buf != s1) return false; buf = s.substr(a+b+a+b+c+a,b); if(buf != s2) return false; return true; } int main() { scanf("%d",&T); while(T--) { scanf("%s",buf); n = strlen(buf); s.clear(); for(int i=0;i<n;i++) if(isalpha(buf[i])) s += buf[i]; n = s.size(); ok = false; if(n < 5) ; else { for(int i=1;i<n/2;i++) { for(int j=1;j<n/2;j++) { if(i+j+i+j+i == n && ok1(i,j)) { ok = true; break; } int c = n - 3*(i+j); if(c > 0 && 3*(i+j) + c == n && ok2(i,j,c)) { ok = true; break; } } if(ok) break; } } if(ok) printf("Yes\n"); else printf("No\n"); } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
ZOJ Problem Set - 3818 Pretty Poem
原文地址:http://blog.csdn.net/weizhuwyzc000/article/details/47189491