字符串处理问题
单个字符的处理,略过换行符直接读取内容。
对样例的分析
001 0 1 T
011 000 111 A
010 00 10 01 11 N ' ' M
011 001 111 000 E
代码:
#include<stdio.h>
#include<string.h>
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<8; len++){
for(int i = 0;i < (1<<len)-1 ; 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<8; 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()){
//printcodes();
while(1){
int len = readint(3);
if(len == 0) break;
//printf("len=%d\n",len);
while(1){
int v = readint(len);
if(v==(1<<len)-1) break;
putchar(code[len][v]);
}
}
putchar('\n');
}
return 0;
}