• UVA213 UVALive5152 Message Decoding


    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 == '
    ' || c == '
    '));
    
        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 == '
    ' || c == '
    ')
                    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('
    ');
        }
    
        return 0;
    }


  • 相关阅读:
    POJ 2689
    NEFU 109
    HDU 2098
    NEFU 2
    NEFU 117
    NEFU 84
    POJ 1061
    NEFU116 GCD
    NEFU 115
    HDU 2099
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564418.html
Copyright © 2020-2023  润新知