刷题记录--UVa213 Message Decoding

Posted hardworkingshow

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题记录--UVa213 Message Decoding相关的知识,希望对你有一定的参考价值。

  紫书上的思路我觉得很不错,尤其是数据存储和调用的方式,值得学习。

  下面的码是我看了之后自己独立完成了,但也废了不少功夫。

  未注意格式,也没有submit,可能会wa,但结果应该是正确的。

#include<cstdio>
//#define LOCAL
#include<cstring>
#include<iostream>
using namespace std;

int code[8][1<<8];

int readchar(void){
    for(;;){
    int ch=getchar();
    if(ch!=
&&ch!=
)return ch;
    }
}

int readheader(void){
    memset(code,0,sizeof(code));
    code[1][0]=readchar();
    for(int len=2;len<8;len++){
        for(int i=0;i<(1<<len)-1;i++){
            int ch=getchar();
            if(ch==EOF)return 0;
        //    cout<<"debug"<<endl;
            if(ch==
||ch==
)return 1;
            code[len][i]=ch;
        }    
    }
}

int readint(int x){
    int num=0;
    while(x--){
        num=2*num+readchar()-0;
    }
    return num;
}


int main(){
//    freopen("input.txt","r",stdin);
    #ifdef LOCAL
    freopen("input.txt","r",stdin);
    #endif
    while(readheader()){
//        cout<<"debug"<<endl;
        for(;;){
            int len=readint(3);
            if(len==0)break;
//            while(int i=readint(len)!=(1<<len)-1){  //while里不能定义变量,我第一次是因为这个错了 
//                putchar(code[len][i]);
//            }        
            for(;;){
                int v=readint(len);
                if(v==(1<<len)-1)break;
//                cout<<"debug"<<endl;
                putchar(code[len][v]);
            }
        }
        putchar(
);
    }
    return 0;
}

 

以上是关于刷题记录--UVa213 Message Decoding的主要内容,如果未能解决你的问题,请参考以下文章

UVa 213 - Message Decoding

UVa 213:Message Decoding

uva213 Message Decoding

[UVa 213]Message Decoding,ACM/ICPC World Finals 1991 信息解码

UVa 213 Message Decoding (信息编码)

[算法竞赛入门经典]Message Decoding,ACM/ICPC World Finals 1991,UVa213