首页 > 代码库 > 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;}
Pretty Poem