NYOJ:264国王的魔镜
来源:互联网 发布:2018mpacc知乎 编辑:程序博客网 时间:2024/04/30 21:23
国王的魔镜
- 描述
- 国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。
比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把这条项链变为ABBA。如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜)。
给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。
- 输入
- 第一行是一个整数N(N<=10)表示测试数据的组数)
每组测试数据占一行 只有一个字符串(长度小于100),由大写英文字母组成,表示最终的项链。 - 输出
- 每组测试数据的输出只有一个整数,表示国王没使用魔镜前,最初的项链可能的最小长度。
- 样例输入
2ABBAABBAA
- 样例输出
21
解题思路:如果这个串的长度是奇数,那么这个串就不可能是经过镜面对称得来的,所以串的最小长度就是它本身,如果串是偶数,还要讨论一种情况,如AB,第一个与第二个不一样,那么二就是最小串,若长度为2,但是串为AA,则最小串长为1.可以分为:先看这个串长是否为2,如果是,看第一个字符与第二个是否相等,如果不相等,输出2,接下来判断串长是否为奇数,如果是奇数,输出字符串的长度就是答案,其他情况,将串对半劈开进行对应位置的比较,d=1,劈成两半的串有不对称的地方,出现这种情况,就输出当前串长的二倍。#include<stdio.h>#include<string.h>int main(){char a[100];int i,len,temp,num;scanf("%d",&num);//num组测试数据getchar();//用于接收空格while(num--){gets(a);len=strlen(a);while(1){if(len==2&&a[0]!=a[1])//串长为2,且两个字符不一样,输出串长为2{printf("2\n");break;}else if(len%2!=0)//如果串长为奇数,串不可能是镜面对称得来的,直接输出长度{printf("%d\n",len);break;}else{int d=0;len=len/2;//将串对半劈开,进行比较for(i=0;i<len;i++)if(a[i]!=a[2*len-i-1]){d=1;//代表中间有不对称的地方break;}if(d==1){printf("%d\n",2*len);//d为1代表串不是镜面对称的,结束循环,输出答案break;}}}}return 0;}
0 0
- NYOJ 264 国王的魔镜
- NYOJ 264 国王的魔镜
- NYOJ 264 国王的魔镜
- NYOJ-264 国王的魔镜
- NYOJ 264 国王的魔镜
- NYOJ 264 国王的魔镜
- nyoj-264-国王的魔镜
- nyoj 264 国王的魔镜
- nyoj 264 国王的魔镜
- NYOJ 264 国王的魔镜
- nyoj 264 国王的魔镜
- NYOJ 264--国王的魔镜
- NYOJ:264 国王的魔镜
- nyoj 264 国王的魔镜
- NYOJ:264国王的魔镜
- NYOJ-264 国王的魔镜
- NYOj 264 国王的魔镜
- NYOJ 264 国王的魔镜
- 静态库与动态库相关知识笔记
- MySQL主从复制的常见拓扑、原理分析以及如何提高主从复制的效率总结
- jmap -histo pid 输出的[C [B [I [S methodKlass constantPoolKlass含义
- Qt之图形视图框架
- 一些无线路由器配置项的简略解释
- NYOJ:264国王的魔镜
- 我给媳妇解释设计模式:第一部分
- Gerrit代码审核服务器搭建全过程
- 浅谈VC中使用Qt库之一
- Glide 一个专注于平滑滚动的图片加载和缓存库
- BootLoader与Linux内核的参数传递
- 剑指offer--替换空格
- javaee学习
- 访问量中 pv uv ip的区别