智力题存档

198 阅读1分钟

小白鼠试药

有 16 个一模一样的瓶子,其中有 15 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,有一星期的时间,最少需要多少只小白鼠能检验出哪个瓶子里有毒药? 之前面试的时候也碰到过这道题,当时没做出来,面试官提示之后我似乎恍然大悟但还是模模糊糊……

一个能说服自己的解法

首先需要对16这个数字警觉!
这 16 个瓶子能够被三位编码:
000=0
001=1
010=2
011=3
100=4
101=5
110=6
111=7
已知可以这样编码,我们还需要几个小白鼠呢?
如果用暴力解法,我们需要16只小白鼠,分别一人喝一瓶。但是现在,对于每一瓶,我们可以用3只小白鼠来喝,这样也相当于用不同的”个体“来喝药。如果一瓶药有毒,那么喝过这瓶药的组合都会挂。例如,如果第一只和第三只喝挂了,第二只没挂,说明【第一只,第三只】组合对应的药有毒,则得出结论,有毒的是第5瓶