2014牡丹江网络赛ZOJPretty Poem(暴力枚举)

简介:

/*
       将给定的一个字符串分解成ABABA 或者 ABABCAB的形式!
        思路:暴力枚举A, B, C串!
 */
#include<iostream>
#include<cstring>
#include<cstdio>
#include<string>

using namespace std;
string str;
char ch[55];
int main(){
    int t;
    scanf("%d", &t);
    getchar();
    while(t--){
        char cc;
        int cnt=0;
        scanf("%c", &cc);
        
        while(cc!='\n'){
            if((cc>='A' && cc<='Z' || cc>='a' && cc<='z'))
                ch[cnt++]=cc;
            scanf("%c", &cc);
        } 
        ch[cnt]='\0';
        str=string(ch);
        int len=strlen(ch);
        bool flag=false;
        for(int i=1; i<len/2; ++i){
            string A=str.substr(0, i);
            for(int j=1; j<len/2; ++j){
                if(i+j>len/2) break; 
                string B=str.substr(0+i, j);
                if(A==B) continue; 
                int ll=i;
                int k=i+j, x;
        
                for(x=0; x<ll && k<len; ++k, ++x)
                    if(A[x] != ch[k])
                       break;
                if(x==ll){
                    k=i+j+i;
                    ll=j;
                    for(x=0; x<ll && k<len; ++k, ++x)
                          if(B[x] != ch[k])
                           break;
                    if(x==ll){
                        
                        ll=i;
                        k=i+j+i+j;
                        for(x=0; x<ll && k<len; ++k, ++x)
                            if(A[x] != ch[k])
                              break;
                        if(x==ll && k==len)
                           flag=true;
                        if(!flag){
                            k=i+j+i+j;
                            ll=j;
                            int m=len-1;
                            for(x=ll-1; x>=0 && m>k; --m, --x)
                                if(B[x] != ch[m])
                                    break;
                            if(x==-1){
                                ll=i;
                                for(x=ll-1; x>=0 && m>k; --m, --x)
                                    if(A[x] != ch[m])
                                        break;
                                if(x==-1){
                                   string C=str.substr(k, m-k+1);
                                   if(A!=C && B!=C)    
                                      flag=true;
                                }
                            }  
                        }
                    }
                }
            }
        }
        if(flag) printf("Yes\n");
        else printf("No\n");
    } 
    return 0;
}

目录
相关文章
|
2月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-936 砝码称重
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-936 砝码称重
30 0
|
7月前
|
算法 Java 测试技术
LeetCode 周赛上分之旅 #46 经典二分答案与质因数分解
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
38 0
LeetCode 周赛上分之旅 #46 经典二分答案与质因数分解
|
9月前
2022年9月月赛乙组 T3.棋盘问题
2022年9月月赛乙组 T3.棋盘问题
|
11月前
|
人工智能 算法 测试技术
LeetCode 双周赛 103(2023/04/29)区间求和的树状数组经典应用
这场周赛是 LeetCode 双周赛第 103 场,难得在五一假期第一天打周赛的人数也没有少太多。这场比赛前 3 题比较简单,我们把篇幅留给最后一题。
62 0
|
算法
【递归与递推】洛谷[NOIP2002 普及组] 过河卒
前言 本题来自洛谷P1002. 题目链接:[NOIP2002 普及组] 过河卒 - 洛谷
125 0
|
C++
【蓝桥杯基础题】2017年省赛—九宫幻方
【蓝桥杯基础题】2017年省赛—九宫幻方
133 0
【蓝桥杯基础题】2017年省赛—九宫幻方
AcWing 第 15 场周赛 3827. 最小正整数(思维)
AcWing 第 15 场周赛 3827. 最小正整数(思维)
64 0
|
算法 C++
【算法题解】蓝桥杯2022年第十三届决赛C++ B组真题-机房
【算法题解】蓝桥杯2022年第十三届决赛C++ B组真题-机房
【算法题解】蓝桥杯2022年第十三届决赛C++ B组真题-机房
两道天梯赛算法题
多写题少说话多做事
|
算法 Java
【算法攻坚】两道简单题目
【算法攻坚】两道简单题目
88 0
【算法攻坚】两道简单题目