首页 > 代码库 > Pretty Poem

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

3niconiconi~pettan,pettan,tsurupettanwafuwafu

Sample Output

YesYesNo


#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 + 7using 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,\0,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,\0,sizeof(A));                memset(B,\0,sizeof(B));                memset(C,\0,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,\0,sizeof(A));                    memset(B,\0,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,\0,sizeof(A));            memset(B,\0,sizeof(B));            memset(C,\0,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,\0,sizeof(A));                    memset(B,\0,sizeof(B));                    memset(C,\0,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

 

Pretty Poem