`
暴风雪
  • 浏览: 377169 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

[字符串+暴力]zoj 3818

 
阅读更多

题意:

    给出一个字符串,问这个字符串去掉标点符号之后能不能写成ABABA或者ABABCAB的形式

解题丝路:

    字符串长度只有50所以可以暴力求解,这里要注意,abc必须要两两不同。

 

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char str[100],sss[100],len;
bool isABABA(){
    int a,b,i,j,k;
    for(a=1;a<len;a++){
        for(b=1;b<len;b++){
            if((a*3+b*2)==len){
                for(i=0;i<a;i++){
                    if(!(str[i]==str[i+a+b]&&str[i]==str[i+a+a+b+b])){
                        goto run;
                    }
                }
                for(i=0;i<b;i++){
                    if(!(str[i+a]==str[i+a+b+a])){
                        goto run;
                    }
                }
                if(a==b){
                    int flag=0;
                    for(i=0;i<b;i++){
                        if(str[i+a]!=str[i]){
                            flag=1;
                            break;
                        }
                    }
                    if(flag==0)goto run;
                }
     //           cout<<"niconiconi"<<a<<" "<<b<<endl;
                return 1;
            }
            run:;
        }
    }
    return 0;
}
bool isABABCAB(){
//    cout<<str<<endl;
    int a,b,i,j,k,c;
    for(a=1;a<len;a++){
        for(b=1;b<len;b++){
            if((a*3+b*3)<len){
                c=len-a*3-b*3;
                for(i=0;i<a;i++){
                    if(!(str[i]==str[i+a+b]&&str[i]==str[i+a+a+b+b+c])){
                        goto run1;
                    }
                }
                for(i=0;i<b;i++){
                    if(!(str[i+a]==str[i+a+b+a]&&str[i+a]==str[i+a+b+a+b+c+a])){
                        goto run1;
                    }
                }
                if(c==a){
                    int flag=0;
                    for(i=0;i<a;i++){
                        if(str[i]!=str[i+a+a+b+b]){
                            flag=1;
                            break;
                        }
                    }
                    if(flag==0)goto run1;
                }
                if(c==b){
                    int flag=0;
                    for(i=0;i<b;i++){
                        if(str[i+a]!=str[i+a+a+b+b]){
                            flag=1;
                            break;
                        }
                    }
                    if(flag==0)goto run1;
                }
                if(a==b){
                    int flag=0;
                    for(i=0;i<b;i++){
                        if(str[i+a]!=str[i]){
                            flag=1;
                            break;
                        }
                    }
                    if(flag==0)goto run1;
                }
    //            cout<<"fuckniconiconi"<<a<<" "<<b<<" "<<c<<endl;
                return 1;
            }
            run1:;
        }
    }
    return 0;
}
int main(){
    int cas,i,j,k;
    cin>>cas;
    while(cas--){
        cin>>sss;
        int l=strlen(sss);
        len=0;
        for(i=0;i<l;i++){
            if((sss[i]>='a'&&sss[i]<='z')||(sss[i]>='A'&&sss[i]<='Z')){
                str[len++]=sss[i];
            }
        }
        str[len]='\0';
        if(isABABA()||isABABCAB()){
            printf("Yes\n");
        }else{
            printf("No\n");
        }
    }
    return 0;
}

 

0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics