主要按照紫书的思路。 自己想的读取办法太麻烦了。
#include <bits/stdc++.h>
using namespace std;
int code[8][1<<8];
int readchar()
{
while(1)
{
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 readcodes()
{
memset(code,0,sizeof(code));
code[1][0] = readchar();
for(int len = 2; len <= 7; len++)
{
for(int i = 0; i < (1<<len)-1 ;i++)
{
int ch = getchar();
if(ch == EOF) return 0;
if(ch == '\r' || ch == '\n') return 1;
code[len][i] = ch;
}
}
return 1;
}
int main()
{
while(readcodes())
{
while(1)
{
int len = readint(3);
if(len == 0) break;
while(1)
{
int r = readint(len);
if(r == (1<<len)-1) break;
printf("%c",(char)code[len][r]);
}
}
printf("\n");
}
return 0;
}