比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把这条项链变为ABBA。如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜)。
给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。
2 ABBAABBA A
2 1
细节注意不到要人命啊!
ac码:
#include<stdio.h> #include<string.h> char ch[105]; int fun(int len) { if(len<=1) return 0; int i=len/2,j=(len/2-1); while((i<len)&&(j>=0)) { if(ch[i]!=ch[j]) return 0; i++; j--; } if((i==len)&&(j==-1)) return 1; else return 0; } int main() { int n; scanf("%d",&n); while(n--) { scanf("%s",ch); int len=strlen(ch); while(fun(len)) { len=len/2; } printf("%d\n",len); } return 0; }
原文地址:http://blog.csdn.net/u012804490/article/details/36902549