小白鼠檢測毒藥問題


小白鼠檢測毒藥問題

有1000個一模一樣的瓶子,其中有999瓶是普通的水,有一瓶是毒藥。任何喝下毒藥的生物都會在一星期之後死亡。現在,你只有10只小白鼠和一星期的時間,如何檢驗出哪個瓶子裡有毒藥?


這個問題我們可以用二進制來進行解答。

2^9 = 512

2^10 = 1024

因此10個小白鼠即可。

為了便於理解,我們先設定 n=3,給每隻小白鼠進行編號:a1、a2、a3,給藥水進行編號0、1...n-1

因此我們得到下表:

小白鼠檢測毒藥問題

根據圖表下面1的位置,我們讓a1小白鼠喝4、5、6、7號藥水,a2小白鼠:2、3、6、7,a3小白鼠:1、3、5、7

然後我們就靜待時間到後小白鼠的死亡情況,0代表存活,1代表死亡,根據a1、a2、a3的順序組成二進制數字,最後得到的十進制數字就是有毒藥水編號。

例如:最後情況為 a1死亡,a2死亡,a3存活,那麼對應的二進制為110,十進制為6,則6號藥水有毒。


分享到:


相關文章: