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

目录
相关文章
|
算法 Android开发 索引
LeetCode 周赛上分之旅 #44 同余前缀和问题与经典倍增 LCA 算法
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
82 0
|
6月前
【洛谷 P1002】[NOIP2002 普及组] 过河卒 题解(递归+记忆化搜索)
`NOIP2002`普及组的过河卒问题是一个棋盘路径计数挑战。卒从$(0,0)$出发到$(n,m)$,只能向下或向右移动,马在$(c1,c2)$固定,控制某些点。任务是计算不受马阻挡的路径数。输入是目标和马的位置,输出是路径总数。使用动态规划和记忆化搜索避免重复计算,样例输入$(6,6,3,3)$输出$6$。代码中定义了$f(x,y)$计算$(x,y)$处的路径数,利用边界条件和递推关系计算。
72 0
|
7月前
|
C++ 存储 Serverless
力扣C++|一题多解之数学题专场(2)
力扣C++|一题多解之数学题专场(2)
50 0
力扣C++|一题多解之数学题专场(2)
|
算法 Java 测试技术
LeetCode 周赛上分之旅 #46 经典二分答案与质因数分解
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
67 0
LeetCode 周赛上分之旅 #46 经典二分答案与质因数分解
|
存储 算法 搜索推荐
1【百度之星】基础算法讲解—穷举、贪心(上)
1【百度之星】基础算法讲解—穷举、贪心(上)
|
存储 算法
1【百度之星】基础算法讲解—穷举、贪心(下)
1【百度之星】基础算法讲解—穷举、贪心(下)
|
人工智能 算法 测试技术
LeetCode 双周赛 103(2023/04/29)区间求和的树状数组经典应用
这场周赛是 LeetCode 双周赛第 103 场,难得在五一假期第一天打周赛的人数也没有少太多。这场比赛前 3 题比较简单,我们把篇幅留给最后一题。
80 0
【蓝桥杯基础题】2017年省赛—九宫幻方
【蓝桥杯基础题】2017年省赛—九宫幻方
【蓝桥杯基础题】2017年省赛—九宫幻方
|
算法
【递归与递推】洛谷[NOIP2002 普及组] 过河卒
前言 本题来自洛谷P1002. 题目链接:[NOIP2002 普及组] 过河卒 - 洛谷
225 0
(数论)蓝桥杯AcWing 1205. 买不到的数目
(数论)蓝桥杯AcWing 1205. 买不到的数目
47 0
下一篇
无影云桌面