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