问题一

有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有 1 瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?

解法

首先将这 1000 个瓶子进行编号:1 , 2 , 3 , 4 , 5 , 6 … 1000

然后将所有的小白鼠进行排列组合,组成一个 二进制 队列的形式:

  • 0 代表不喝

  • 1 代表喝

比如:

0000000001 代表第 1 瓶水被喝情况
0000000010 代表第 2 瓶水被喝情况
0000000011 代表第 3 瓶水被喝情况
0000000100 代表第 4 瓶水被喝情况

1111101000 代表第 1000 瓶水被喝情况

【春节特辑】神奇的二进制_java二进制小老鼠

全部