World Finals >> 1991 - San Antonio
问题链接:UVA213 UVALive5152 Message Decoding。
问题简述:参见问题链接。
问题分析:(略)。
程序中,若干功能封装到函数中,使得程序逻辑变得简洁。
AC的C语言程序如下:
/* UVA213 UVALive5152 Message Decoding */ #include <stdio.h> #include <memory.h> #define CODE_LEN 7 int code[CODE_LEN+1][1<<(CODE_LEN+1)]; int readchar() { int c; while((c=getchar()) && (c == '\n' || c == '\r')); return c; } int readcodes() { int i, j; char c; memset(code, 0, sizeof(code)); code[1][0] = readchar(); for(i=2; i<=CODE_LEN; i++) { int len = (1<<i)-1; for(j=0; j<len; j++) { if((c = getchar()) == EOF) return 0; else if(c == '\n' || c == '\r') return 1; code[i][j] = c; } } return 1; } int readint(int len) { int v = 0; while(len--) v = v * 2 + readchar() - '0'; return v; } int main(void) { 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; }