老鼠和毒葯的問題


今天分享一道很有意思的問題。
 
題目:
  有1000只一模一樣的瓶子,編號1-1000。其中999瓶是水,一瓶是看起來像水的毒葯。只要老鼠喝下一小口毒葯,一天后則死亡。現在,你有7只老鼠和一天的時間,如何檢驗出哪個號碼瓶子里是毒葯?

 

答案:
根據2^10=1024,所以10個老鼠可以確定1000個瓶子具體哪個瓶子有毒。

先將數據規模變小,有8只一模一樣的瓶子,其中有一只瓶子是毒葯。現在最少需要幾只老鼠可以檢驗出第幾瓶才是毒葯?

 

具體實現跟3個老鼠確定8個瓶子原理一樣。
          
0 0 0 = 0
0 0 1 = 1
0 1 0 = 2
0 1 1 = 3
1 0 0 = 4
1 0 1 = 5
1 1 0 = 6
1 1 1 = 7

 
分析:
我們只用3只老鼠,老鼠A、B、C。

上圖表中列代表的是瓶子的數量,行代表老鼠。

看每一行的時候,編號為1表示該行對應的老鼠喝了。
舉例,比如編號為3的瓶子,0 1 1,表示老鼠B和老鼠C都喝了;編號為7的表示,老鼠A、B、C都喝了。

 

 

討論:
  1、比如結果是老鼠B、C死了,我們就可以得出011=3,即第3瓶葯為毒葯
  2、比如結果是老鼠A、B、C都死了,我們就可以得出111=7,即第7瓶葯為毒葯
  3、再比如,只有老鼠B死了,我們就可以得出010=2,即第2瓶葯為毒葯
  4、再比如,沒有老鼠死,我們就可以得出000=0,即第0瓶葯為毒葯

 
結束:
通過8瓶的例子,我們直到只需要3只老鼠【 2^3=8 】即可判斷出哪一瓶是毒葯,那么1000瓶我們只需要10只老鼠即可判斷,因為原理是一樣的;

比如10只老鼠通過二進制的方式為1的時候喝了,最后是第5只和第6只老鼠死了,我們可以很快的定位到是第 0000110000 = 2^5+ 2^4 = 48為毒葯;今天的這個題很有意思吧!

 

歡迎關注【無量測試之道】公眾號,回復【領取資源】
Python編程學習資源干貨、
Python+Appium框架APP的UI自動化、
Python+Selenium框架Web的UI自動化、
Python+Unittest框架API自動化、

資源和代碼 免費送啦~
文章下方有公眾號二維碼,可直接微信掃一掃關注即可。

備注:我的個人公眾號已正式開通,致力於測試技術的分享,包含:大數據測試、功能測試,測試開發,API接口自動化、測試運維、UI自動化測試等,微信搜索公眾號:“無量測試之道”,或掃描下方二維碼:

 

 添加關注,讓我們一起共同成長!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM