一道例题,以前看的时候觉得很高大上,昨天突然想起这道题,就看紫书,以紫书的思路自己完成了代码。
#include<stdio.h>
#include<string.h>
int readchar() {
while (1) {
int ch = getchar();
if (ch == '\n'|| ch == '\r') continue;
else return ch;
}
}
int readint(int c) {
int v = 0;
while (c--)
v = v * 2 + readchar() - '0';
return v;
}
int code[8][1 << 8];
int readcode() {
int i, ch, len;
code[1][0] = readchar();
for (len = 2; len <= 7; len++) {
for (i = 0; i < (1 << len) - 1; i++) {
ch = getchar();
if(ch == EOF) return 0;
if(ch == '\n'|| ch == '\r') return 1;
code[len][i] = ch;
}
}
return 1;
}
int main() {
while(readcode()) {
while(1) {
int len = readint(3);
if(len == 0) break;
while(1) {
int v = readint(len);
if(v < (1 << len) - 1)
putchar(code[len][v]);
else break;
}
}
printf("\n");
memset(code, 0, sizeof(code));
}
}
浙公网安备 33010602011771号