题意:
给出一个字符串;
判断这个字符串是不是押韵;
押韵的情况有两种"ABABA"和"ABABCAB";
像ni co ni co ni就是ABABA格式的;
还要求ABC不相同;
思路:
直接枚举ABC可能的长度,
暴力判断:
AC代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 50 + 10;
char s[N], str[N];
char a[N], b[N];
int n, len;
bool judge1(){
int flag;
for(int i = 1; i < len; i++) {
int j = len - i;
flag = 0;
if(i % 3 == 0 && j % 2 == 0) {
int leni = i / 3;
int lenj = j / 2;
if(leni != lenj)
flag = 1;
if(leni == lenj) {
for(int k = 0; k < leni; k++) {
if(str[k] != str[k + leni]) {
flag = 1;
break;
}
}
}
if(!flag)
continue;
flag = 0;
for(int k = 0; k < leni; k++) {
if(str[k] != str[k + leni + lenj] || str[k] != str[k + 2 * leni + 2 * lenj]) {
flag = 1;
break;
}
}
if(flag)
continue;
for(int k = 0; k < lenj; k++) {
if(str[k + leni] != str[k + 2 * leni + lenj]) {
flag = 1;
break;
}
}
if(flag)
continue;
return true;
}
}
return false;
}
bool judge2() {
int flag;
for(int i = 1; i < len; i++) {
int j = len - i;
flag = 0;
if(i % 3 == 0) {
int leni = i / 3;
int lenj = j;
int lena, lenb;
int flag1,flag2,flag3;
for(int lena = 1; lena < leni; lena++) {
flag1 = flag2 = flag3 = 0;
lenb = leni - lena;
if(lena != lenb) flag1 = 1;
if(lena != lenj) flag2 = 1;
if(lenb != lenj) flag3 = 1;
if(lena == lenb) {
for(int k = 0; k < lena; k++) {
if(str[k] != str[k + lena]) {
flag1 = 1;
break;
}
}
}
if(lena == lenj) {
for(int k = 0; k < lena; k++) {
if(str[k] != str[k + 2 * leni]) {
flag2 = 1;
break;
}
}
}
if(lena == lenj) {
for(int k = 0; k < lena; k++) {
if(str[k + lena] != str[k + 2 * leni]) {
flag3 = 1;
break;
}
}
}
if(flag1 && flag2 && flag3) {
flag = 1;
break;
}
}
if(!flag)
continue;
flag = 0;
for(int k = 0; k < leni; k++) {
if(str[k] != str[k + leni] || str[k] != str[k + 2 * leni + lenj]) {
flag = 1;
break;
}
}
if(flag)
continue;
return true;
}
}
return false;
}
int main() {
int t;
scanf("%d",&t);
while(t--) {
scanf("%s",s);
int l = strlen(s);
len = 0;
for(int i = 0; i < l; i++) {
if(s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z')
str[len++] = s[i];
}
str[len] = '\0';
if(judge1() || judge2())
printf("Yes\n");
else
printf("No\n");
}
}