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次方瓶水中是否有毒藥

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