您的位置:首页 > 编程语言 > C语言/C++

UVa 213 信息解码Message Decoding

2017-02-10 23:50 357 查看
不是难题,但卡了我一段时间

看了刘汝佳的书 慢慢的就明白了

主要由对编码串的处理构成 这部分相信大家看代码都能懂

AC代码(和书上差不多,但算是一个总结吧)

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <map>

using namespace std;
char code[8][1<<8];

int readchar()
{
while(1)
{
int c=getchar();
if(c!='\n' && c!='\r') return c;
}
}

int readlen(int l)
{
int v=0;
while(l--)
{
v=v*2+readchar()-'0';
}
return v;
}

int readcodes()
{
memset(code,0,sizeof(code));//这一步第一次时掉了
code[1][0]=readchar();
for(int l=2;l<8;l++)
{
for(int u=0;u<(1<<l)-1;u++)
{
int buffer;
buffer=getchar();
if(buffer==EOF) return 0;
if(buffer=='\n' || buffer=='\r') return 1;
code[l][u]=buffer;
}
}
return 1;
}
int main()
{
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
while(readcodes())
{
while(1)
{
int len=readlen(3);
if(len==0) break;
while(1)
{
int kagamin=readlen(len);
if(kagamin==(1<<len)-1) break;
printf("%c",code[len][kagamin]);
}
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ oi