| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 803 人关注过本帖
标题:C语言小测试,正在进行中,高手们随手帮忙一下吧
只看楼主 加入收藏
陌上张郎
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-4-25
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:8 
C语言小测试,正在进行中,高手们随手帮忙一下吧
描述
国王有一个魔镜,可以把任何接触镜面的东西变成原来的两倍——只是,因为是镜子嘛,增加的那部分是反的。

比如一条项链,我们用AB来表示,不同的字母表示不同颜色的珍珠。如果把B端接触镜面的话,魔镜会把这条项链变为ABBA。如果再用一端接触的话,则会变成ABBAABBA(假定国王只用项链的某一端接触魔镜)。

给定最终的项链,请编写程序输出国王没使用魔镜之前,最初的项链可能的最小长度。

输入
第一行是一个整数N(N<=10)表示测试数据的组数)
每组测试数据占一行 只有一个字符串(长度小于100),由大写英文字母组成,表示最终的项链。
输出
每组测试数据的输出只有一个整数,表示国王没使用魔镜前,最初的项链可能的最小长度。
样例输入
2
ABBAABBA
A
样例输出
2
1
搜索更多相关主题的帖子: 英文字母 字符串 C语言 ABBA 
2011-04-25 17:16
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:1 
算法:
1、读取字符串 s
2、int l = strlen(s);
3、检查 l 是否偶数,若是则执行 4,否则执行 7
4、检查 s[0] ~ s[l - 1]  是否回文,若是则执行 5,否则执行 7
5、l /= 2;
6、重复 3 ~ 5
7、printf("%d\n", l);

[ 本帖最后由 voidx 于 2011-4-25 21:04 编辑 ]
2011-04-25 20:45
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:1 
又来出题的了

                                         
===========深入<----------------->浅出============
2011-04-25 20:57
爱海松涛
Rank: 3Rank: 3
来 自:安徽合肥
等 级:论坛游侠
帖 子:120
专家分:197
注 册:2011-2-25
收藏
得分:1 
路过、、、、
2011-04-25 22:07
raiy
Rank: 1
等 级:新手上路
帖 子:8
专家分:8
注 册:2011-4-8
收藏
得分:1 
路过  ~~~~~~~
2011-04-25 23:24
crystal0418
Rank: 1
来 自:福建福州
等 级:新手上路
帖 子:6
专家分:6
注 册:2011-4-26
收藏
得分:1 
以下是引用voidx在25-4-2011 20:45:56的发言:

算法:
1、读取字符串 s
2、int l = strlen(s);
3、检查 l 是否偶数,若是则执行 4,否则执行 7
4、检查 s[0] ~ s[l - 1]  是否回文,若是则执行 5,否则执行 7
5、l /= 2;
6、重复 3 ~ 5
7、printf("%d\n", l);
思路差不多,大概就这样了

等我毕业,就两年,记住哦
2011-04-26 10:01
zhaxi0927
Rank: 2
来 自:buct
等 级:论坛游民
帖 子:13
专家分:15
注 册:2011-4-7
收藏
得分:1 
#include<conio.h>
#include<stdio.h>
#include<iostream>
#define Max 100
using namespace std;
int main()
{
    char a[Max];
    int m,n,i,flag;
    cin>>m;
    while(m--!=0)
    {
        cin>>a;
        n=strlen(a);
        flag=1;
        while(flag==1)
        {
            if(n%2==1)break;
            else
            {
                i=0;
                while(i<=n/2-1&&a[i]==a[n-i-1])i++;
                if(i==n/2)
                {
                    n=n/2;
                }   
                else flag=0;   
            }   
        }   
        cout<<n<<endl;
    }
    getch();
    return 0;  

Be strong!
2011-04-26 13:54
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:1 
小弟不知道哪里有错,请指教。
程序代码:
char a[20],b[20];
int i,s=0,j,p=0;
scanf("%s",&a);
i=strlen(a);
while(1)
{if(i%2==1)
break;
if(i==2&&b[0]!=b[1])break;
else {p=0;for(j=0;j<i;j++)b[j]=a[j];
for(j=0;j<i/2;j++)
if(b[j]!=b[2*i-j])
break;
else p++;}if(p==j){i=i/2;s++;}}
printf("%d",s);

 
2011-04-26 15:47
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 8楼 hjywyj
要让大家帮你找错就先把自己的代码缩进一下

程序代码:
#include <stdio.h>
#include <string.h>

char is_palindromic_p(char s[], int l) {
    int i;
    for (i = 0, l--; i < l && s[i] == s[l]; i++, l--);
    return i >= l;
}

int main() {
    char s[1000];
    int l;
    scanf("%s", s);
    l = strlen(s);
    for (; l % 2 == 0 && is_palindromic_p(s, l); l /= 2);
    printf("%d\n", l);
    return 0;
}


[ 本帖最后由 voidx 于 2011-4-26 17:14 编辑 ]
2011-04-26 16:51
快速回复:C语言小测试,正在进行中,高手们随手帮忙一下吧
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017889 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved