# include <stdio.h> # include <algorithm> # include <string.h> # define MAX 55 using namespace std; int L; char a[MAX]; int vis[MAX]; int judge1()//ababa { int i,j; int xx,yy,zz; char x[MAX],y[MAX],z[MAX]; for(i=2; i*2<L; i++) { for(j=0; j<i; j++) //ab { x[j]=a[j]; } x[j]='\0'; yy=0; for(j; j<i*2; j++) //ab y[yy++]=a[j]; y[yy]='\0'; if(strcmp(x,y)!=0) continue; zz=0; for(j; a[j]; j++)//a z[zz++]=a[j]; z[zz]='\0'; if(zz>=i) continue; char A[MAX],B[MAX]; for(j=0; j<zz; j++)//a A[j]=a[j]; A[j]='\0'; if(strcmp(A,z)!=0) continue; int bb=0; for(j; j<i; j++)//b B[bb++]=a[j]; B[bb]='\0'; if(strcmp(A,B)==0) continue; return 1; } return 0; } int judge2()//ababcab { int i,j; char x[MAX],y[MAX],z[MAX],w[MAX]; for(i=2;i*3<L;i++) { memset(vis,0,sizeof(vis)); int xx=0; for(j=0;j<i;j++)//ab { x[xx++]=a[j]; vis[j]=1; } x[xx]='\0'; int yy=0; for(j;j<2*i;j++)//ab { vis[j]=1; y[yy++]=a[j]; } y[yy]='\0'; j=L-i; int zz=0; for(;a[j];j++)//ab { vis[j]=1; z[zz++]=a[j]; } z[zz++]='\0'; int ww=0; for(j=i*2;!vis[j];j++)//c { w[ww++]=a[j]; } w[ww]='\0'; if(strcmp(x,y)!=0) continue; if(strcmp(y,z)!=0) continue; char A[MAX],B[MAX]; for(j=1;j<i;j++) { int jj; for(jj=0;jj<j;jj++) A[jj]=a[jj]; A[jj]='\0'; int bb=0; for(jj;jj<i;jj++) B[bb++]=a[jj]; B[bb]='\0'; if(strcmp(A,B)==0) continue; if(strcmp(A,w)==0) continue; if(strcmp(B,w)==0) continue; return 1; } } return 0; } int main() { int t,i; char b[MAX]; scanf("%d",&t); while(t--) { scanf("%s",b); int len=strlen(b); L=0; for(i=0; i<len; i++) { if((b[i]<='z'&&b[i]>='a')||(b[i]<='Z'&&b[i]>='A')) a[L++]=b[i]; } a[L]='\0'; if(judge1()) { printf("Yes\n"); continue; } if(judge2()) { printf("Yes\n"); continue; } printf("No\n"); } return 0; }
原文:http://blog.csdn.net/lp_opai/article/details/39138459