对代码int code[8][1<<8]详解

ACM/ICPC World Finals 1991中有一段代码:

……
int code[8][1<<8];
int readcodes(){……}
……
  • 1<<8是位操作,是将1左移8位,相当于:

$$
1*2^8=256
$$

也就是int code[8][256];

因为在程序中,是将十进制先转换为了二进制;

下面还有一段代码:

int len = readint(3);
int v=readint(len);//读取二进制代码,并且转换为int类型
……
if(v == (1 << len) - 1) break;
putchar(code[len][v]];
……
  • len从2开始到7,则(1<<len)-1:

    • 3 --->2 11
    • 7 --->3 111
    • 15 --->4 1111
    • 31 --->5 11111

    …………

源算法代码

原文地址:https://www.cnblogs.com/apebro/p/12582496.html