老鼠與毒酒

問題I:
有1000桶酒,其中1桶有毒。而一旦吃了,毒性會在1周後發作。現在我們用小老鼠做實驗,要在1周內找出那桶毒酒,問最少需要多少老鼠。
這是老鼠與毒酒最經典問法。


分析:

此問題可以用二進制的思想來解答。

將1000桶酒編號爲0,1,...,999。

10只老鼠分別負責二進制中的相應位,即

第1只老鼠,喝掉編號的二進制表示中右邊第一位爲1的桶內的酒,即1,3,5,7,。。。,999桶內的酒。

第2只老鼠,喝掉編號的二進制表示中右邊第二位爲1的桶內的酒,即2,3,6,....桶內的酒。

第3值老鼠,。。。

。。。

一週之後,哪隻老鼠死了,就說明對應的二進制上的值爲1。

假如,第2,5,7只老鼠死掉了,那麼說明編號爲0001010010,即編號爲82的桶內爲毒酒。


擴展一下,如果有N桶酒,只有1桶有毒,那麼至少需要m只老鼠,這裏m爲滿足2^m>=N的最小的數。


問題II:

@陳利人:有11瓶酒,只有1瓶有毒。喝酒之後,三天會死,只有三天時間。請問至少需要多少隻老鼠,可以找出9瓶沒有毒的酒。


分析:

按照問題I的分析,11瓶酒,需要4只老鼠可以確定出10瓶沒有毒的酒(原因:2^4 > 11, 2^3  < 11)。

但是,這裏只需找出9瓶沒有毒的酒,不需要把10瓶都找出來。

其實,只用找出哪兩瓶中肯定有毒,剩下的9瓶酒就肯定沒毒。

所以,可以11瓶酒進行分組,每組兩瓶酒,可分爲6組:(1,2), (3,4), (5,6), (7,8), (9,10), (11)。

按照問題I的解法,對組進行編號:0,1,...,5。

那麼只需要3只老鼠(2^3 > 6),就可以確定出那一組內有毒酒,那麼剩下的9瓶(或者10瓶)沒毒的酒就找出來了。


ps:如果是12瓶酒,要找出9瓶沒毒的酒,就可以3瓶爲1組,分爲4組,那麼就只需要2只老鼠就可以了。


問題III:

有100只一模一樣的瓶子,編號1-100。其中99瓶是水,一瓶是看起來像水的毒藥。只要老鼠喝下一小口毒藥,一天後則死亡。現在,給你2天的時間,請你告訴我,你至少需要多少隻老鼠,才能檢驗出哪個號碼瓶子裏是毒藥?

此題,就成了三進制問題了。具體分析可參考博文:致被毒死的老鼠君

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