16瓶水问题

有16瓶水,其中一瓶有毒,小白鼠喝一滴有毒的水一小时后会死,要在一小时找出来哪瓶水有毒最少需要几只小白鼠?

对于这道题,每只老鼠在1小时后会有两种状态,死去或者活着。其实就对应了二进制的0和1。
四个二进制恰好就可以有16种状态,如果说每种状态对应一瓶水,出现哪种状态就是哪瓶水有毒。

  • 1111就是全部活着,说明没有被使用的那瓶水有毒。
  • 0000就是全部死去,说明被4只老鼠喝掉的那瓶水有毒。
  • 0111就是只有第一只老鼠死去,说明只被第一只老鼠喝掉的水有毒。

其实情景差不多就是这样的。A,B,C,D四只老鼠.A说明这瓶水只有A喝,AB说明这瓶水只有AB喝,ABCD说明4只老鼠都喝了水。
A:A,AB,AC.AD,ABC,ACD,ABD,ABCD
B:B,AB,BC,BD,ABD,ABC,BCD,ABCD
C: C,AC,BC,CD,ABC,ACD,BCD,ABCD
D: D,AD,BD,CD,ABD,BCD,ACD,ABCD

里面有15种组合,对应15瓶水,外加都没有喝的一瓶水,就是16瓶水

结论就是n只老鼠可以确定2的n次方瓶水中是否有毒药

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章