| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1066 人关注过本帖, 1 人收藏
标题:求助,有一道题我怎么也做不出来
只看楼主 加入收藏
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:3 
程序代码:
#include <stdio.h>
#include <string.h>

static char result[100], *p = result;
static int count[2], i;

void T(const char *str, int n)
{
    for (i = count[0] = count[1] = 0; i < n; ++i)
        ++count[str[i]-'0'];
    if (count[0] == n)
        *p++ = 'A';
    else if (count[1] == n)
        *p++ = 'B';
    else {
        *p++ = 'C';
        T(str, n/2);
        T(str + n/2, n/2);
    }
}

int main(void)
{
    const char *str = "01001011";
    T(str, strlen(str));
    puts(result);
    return 0;
}


My life is brilliant
2013-04-11 23:17
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:3 
解码的前提仍然是知道原串的长度。

重剑无锋,大巧不工
2013-04-12 09:31
q545766943
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-4-11
收藏
得分:0 
回复 8楼 fanpengpeng
不用了,我已经自己做出来了,根本不用你那么复杂的,其实很简单。然后你说的我能不用计算机,用笔算么。不好意思,这个得向我老师,向那些蛋疼的教育问去,谢谢
2013-04-12 18:57
q545766943
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-4-11
收藏
得分:0 
回复 12楼 beyondyf
用strlen()就可以了。
2013-04-12 18:58
q545766943
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-4-11
收藏
得分:0 
回复 9楼 czzdcn123
不知道你什么心理。
2013-04-12 18:58
q545766943
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-4-11
收藏
得分:0 
自己借鉴同学写,应该是对的。
程序代码:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#define N 256
char a[N];
void Trans(int x, int y);
void Trans(int x, int y)
{
    int i, flag=0;
    for(i=x; i<=y; i++)
    {
        if(a[i] == 48)
            flag =flag + 1;
        else
            flag =flag - 1;
    }
        if(flag == y-x+1)
        printf("A");
    else
    {
        if(flag == x-y-1)
            printf("B");
        else
        {
            printf("C");
            Trans(x, (x+y-1)/2);
            Trans((x+y+1)/2, y);
        }
    }
}
void main(void)
{
    int x, y;
    printf("请输入长为2^k(k<=8)的01串(按回车结束输入):" );
    scanf("%s",a);
    x = 0;
    y = strlen(a)-1;
    Trans(x, y);
    getch();
}
    


            



2013-04-12 19:01
快速回复:求助,有一道题我怎么也做不出来
数据加载中...
 
   



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

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