• Pretty Poem


    Poetry is a form of literature that uses aesthetic and rhythmic qualities of language. There are many famous poets in the contemporary era. It is said that a few ACM-ICPC contestants can even write poetic code. Some poems has a strict rhyme scheme like "ABABA" or "ABABCAB". For example, "niconiconi" is composed of a rhyme scheme "ABABA" with A = "ni" and B = "co".

    More technically, we call a poem pretty if it can be decomposed into one of the following rhyme scheme: "ABABA" or "ABABCAB". The symbol A, B and C are different continuous non-empty substrings of the poem. By the way, punctuation characters should be ignored when considering the rhyme scheme.

    You are given a line of poem, please determine whether it is pretty or not.

    Input

    There are multiple test cases. The first line of input contains an integer T indicating the number of test cases. For each test case:

    There is a line of poem S (1 <= length(S) <= 50). S will only contains alphabet characters or punctuation characters.

    Output

    For each test case, output "Yes" if the poem is pretty, or "No" if not.

    Sample Input

    3
    niconiconi~
    pettan,pettan,tsurupettan
    wafuwafu
    

    Sample Output

    Yes
    Yes
    No
    


    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<math.h>
    #include<stack>
    #include<queue>
    #include<set>
    #include<map>
    #include<cmath>
    #include<vector>
    #include<limits.h>
    #include<algorithm>
    #define LL long long
    #define mod 1e9 + 7
    
    using namespace std;
    
    const int M = 55;
    
    char a[M];
    char s[M];
    char A[M];
    char B[M];
    char C[M];
    
    int main()
    {
        int t;
        cin >> t;
        getchar();
        while( t-- )
        {
            gets(s);
            int temp = 0;
            memset(a,'',sizeof(a));
            for(int i = 0; i < strlen(s); ++i)
                if((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z'))
                    a[temp++] = s[i];
            int len = strlen(a);
            int ans = 0;
            for(int i = 1; i < 17; ++i)
            {
                for(int j = 1; j < 25; ++j)
                {
                    if(3 * i + j * 2 != len)
                        continue;
                    memset(A,'',sizeof(A));
                    memset(B,'',sizeof(B));
                    memset(C,'',sizeof(C));
                    strncpy(A,a,i);
                    strncpy(B,a + i + j,i);
                    strncpy(C,a + 2 * i + 2 * j,i);
                    if(strcmp(A,B) == 0 && strcmp(A,C) == 0 && strcmp(B,C) == 0)
                    {
                        memset(A,'',sizeof(A));
                        memset(B,'',sizeof(B));
                        strncpy(A,a + i,j);
                        strncpy(B,a + 2 * i + j,j);
                        if(strcmp(A,B) == 0 && strcmp(A,C) != 0)
                        {
                            ans = 1;
                            break;
                        }
                    }
                }
                if(ans)
                    break;
            }
            for(int i = 2; i < 17; ++i)
            {
                if(3 * i >= len)
                    break;
                memset(A,'',sizeof(A));
                memset(B,'',sizeof(B));
                memset(C,'',sizeof(C));
                strncpy(A,a,i);
                strncpy(B,a + i,i);
                strncpy(C,a + len - i,i);
                if(strcmp(A,B) == 0 && strcmp(A,C) == 0 && strcmp(B,C) == 0)
                {
                    for(int j = 1; j < i; ++j)
                    {
                        memset(A,'',sizeof(A));
                        memset(B,'',sizeof(B));
                        memset(C,'',sizeof(C));
                        strncpy(A,a,j);
                        strncpy(B,a + j,i - j);
                        strncpy(C,a + 2 * i,len - 3 * i);
                        if(strcmp(A,B) != 0 && strcmp(A,C) != 0 && strcmp(B,C) != 0)
                        {
                            ans = 1;
                            break;
                        }
                    }
                }
                if(ans)
                    break;
            }
            if(ans)
                puts("Yes");
            else
                puts("No");
        }
        return 0;
    }
    View Code
  • 相关阅读:
    SpringBoot自动装配
    Docker容器添加对外映射端口
    Day03 腿部训练
    Day04 胸 + 肩部训练
    Day02 背 + 二头肌
    @Transactional注解失效场景
    Docker快速安装RocketMQ
    Linux 命令 速记
    Window Phone 7 设备的方向
    使用异步代理+IAsyncResult 调用函数
  • 原文地址:https://www.cnblogs.com/767355675hutaishi/p/3960552.html
Copyright © 2020-2023  润新知