ZOJ Problem Set - 3818 Pretty Poem

来源:互联网 发布:js对象数组重新赋值 编辑:程序博客网 时间:2024/06/04 19:49

水题 。

#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;}


1 0
原创粉丝点击