标签:
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;
}UVA213 UVALive5152 Message Decoding
标签:
原文地址:http://blog.csdn.net/tigerisland45/article/details/52187599