刷题记录--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,ACM/ICPC World Finals 1991 信息解码
UVa 213 Message Decoding (信息编码)
[算法竞赛入门经典]Message Decoding,ACM/ICPC World Finals 1991,UVa213