国王的魔镜 21
2015-11-28 08:47
183 查看
国王的魔镜
描述
国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。
比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把这条项链变为ABBA。如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜)。
给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。
输入
第一行是一个整数N(N<=10)表示测试数据的组数)
每组测试数据占一行只有一个字符串(长度小于100),由大写英文字母组成,表示最终的项链。
输出
每组测试数据的输出只有一个整数,表示国王没使用魔镜前,最初的项链可能的最小长度。
样例输入
2
ABBAABBA
A
样例输出
2
1
代码如下:
描述
国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。
比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把这条项链变为ABBA。如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜)。
给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。
输入
第一行是一个整数N(N<=10)表示测试数据的组数)
每组测试数据占一行只有一个字符串(长度小于100),由大写英文字母组成,表示最终的项链。
输出
每组测试数据的输出只有一个整数,表示国王没使用魔镜前,最初的项链可能的最小长度。
样例输入
2
ABBAABBA
A
样例输出
2
1
代码如下:
#include <stdio.h> #include <stdlib.h> /* run this program using the console pauser or add your own getch, system("pause") or input loop */ #include<string.h> char a[105]; int Match(num) //判断匹配 { if((num%2)==1) //如果是奇数则代表只有自己本身 return num; else { int i; for(i=0;i<(num/2);i++) { if(a[i] != a[num-1-i]) //字符串首位相等 break; } if(i < (num/2)) return num; else return (Match(num/2)); } } int main() { int length, n; scanf("%d", &n); //2组测试数据 while(n--) { scanf("%s", a); //ABBAABBA length = strlen(a); //求长度 int minleng = Match(length); printf("%d\n", minleng); } return 0; }
相关文章推荐
- em(倍)与px的区别
- CLRS 10.2链表
- 记一次:c3p0连接池死锁的问题
- 被指“造假” 京东喊冤 到底谁在卖“真褚橙”?
- 2015 11 27编写JAVA程序
- 编译原理(三) 消除文法的左递归
- 世界上最精彩的是文字,最有价值的地方是人迹罕至之处。
- 集成入鼠标右键,删除.svn信息
- iOS开发之UINavigationController(二)
- css中position属性(absolute|relative|static|fixed)解析
- [LeedCode]Sparse Matrix Multiplication
- Codeforces 52C (线段树区间更新)
- Android Demo 下拉刷新+加载更多+滑动删除
- Android Demo 下拉刷新+加载更多+滑动删除
- ListView控件的不为人知的秘密
- 对与java io知识的部分总结
- 又一次的Hello World
- 电子流水灯-20151116
- 课件_53.第九章:Ajax技术[8]-全局Ajax设置、辅助方法.rar,很常用
- WebDatagrid自学笔记一