您的位置:首页 > 其它

UVa 213 Message Decoding

2016-05-24 15:14 106 查看
#include <stdio.h>
#include <string.h>

int readchar()//如没有遇到'\r'或'\n'时,返回ch
{
for(;;)
{
int ch = getchar();
if(ch != '\n' && ch != '\r')
return ch;
}
}

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

int code[8][1<<8];
int readcodes()
{
memset(code, 0, sizeof(code));//初始化code数组
code[1][0] = readchar();
for(int len = 2; len <= 7; len++)
{
for(int i = 0; i <= 7; i++)
{
int ch = getchar();
if(ch == EOF)
return 0;
if(ch == '\n' || ch == '\r')
return 1;
code[len][i] = ch;
}
}
return 1;
}

void printcodes()
{
for(int len = 1; len <= 7; len++)
for(int i = 0; i < (1<<len)-1; i++)
{
if(code[len][i] == 0)
return;
printf("code[%d][%d] = %c\n", len, i, code[len][i]);
}
}

int main()
{
while(readcodes())
{
for(;;)
{
int len = readint(3);
if(len == 0)
break;
for(;;)
{
int v = readint(len);
if(v == (1 << len)-1)
break;
putchar(code[len][v]);
}
}
putchar('\n');
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva