您的位置:首页 > 其它

Message Decoding 信息解码UVA 213

2016-12-30 16:58 477 查看
#include<cstdio>

#include<string.h>
char codes[8][1<<8];             //用于储存编码头字符集
//char ch[1<<8];
char readchar(){                                  //此函数由于读取非换行回车的字符
    for(;;){
        char  ch=getchar();
        if(ch!='\n' && ch!='\r')return ch;
    }
}

int readint(int c){                             //用于读取长度为length的编码的十进制数值大小
    int temp=0;
    while(c--){
        char ch=readchar();
        temp=2*temp+ch-'0';
    }
    return temp;
}
int readcodes(){                                //获取编码头,注意每次要清空数组
    memset(codes,0,sizeof(codes));
    codes[1][0]=readchar();
    char ch;
    for(int len=2;len<8;len++){
        for(int value=0;value<(1<<len)-1;value++){
            ch=getchar();
            if(ch==EOF)return 0;
            if(ch=='\n' || ch== '\r') return 1;
            codes[len][value]=ch;
        }
    }
}
int main(){
    while(readcodes()){
//    memset(ch,0,sizeof(ch));
        int count=0;
        int length;
        while((length=readint(3))!=0){
        for(;;){
            int len1=readint(length);
            if(len1==(1<<length)-1)break;//左移运算符优先级低于算术运算符 
            //ch[count++]=codes[length][len1];
            putchar(codes[length][len1]);
        }
        }
    //    puts(ch);
        putchar('\n');
    }
    return 0;
}

有一点不明白的是,为什么提交我注释的那些代码结果是错误的,对输出格式不是很清楚,希望知道的大牛们指导一下,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: