1000桶酒中尋找一桶毒酒演算法

來源:互聯網
上載者:User

標籤:

題目: 

有1000桶酒,其中1桶有毒。而一旦吃了,毒性會在1周后發作。現在我們用小老鼠做實驗,要在1周后找出那桶毒酒,問最少需要多少老鼠,如何檢測(老鼠的使用量越少越好,注意,毒性1周后才會發作,而且一周后必須出結果,所以時間緊迫) 

思路: 

為何需要老鼠做實驗,顯然是根據老鼠的死活來判斷酒的毒性,每一隻老鼠只有2種狀態,死和活,n只老鼠就是這n個死或活的狀態,應該由此敏感的聯想到二進位,隱約去感知1000這個數量與n的關係,2^n能表示多少的資訊量呢?2^10=1024,想到這裡我們可以試著去用10個老鼠去做一下實驗。 

步驟: 

把1000桶酒分別以10位位元標號,從0000000001至1111101000,從這1000個位元中尋找毒酒,毒酒也一定是0和1的某種組合,所以問題轉化為如何得出這個組合的每一位都是多少,我們先思考如何得出第一位(從右至左)是0還是1,結論是只要把所有第一位是1的酒給一隻老鼠喝,如果這隻老鼠最終死了,可知毒酒的第一位一定是1,如果這隻老鼠還活著,可知毒酒第一位一定是0.依次類推,我們使用10隻老鼠便可判斷毒酒的每一位是多少。從而得到毒酒的位元,轉化成10進位便只是第幾桶。

轉載自:http://site.douban.com/196781/widget/forum/12602268/discussion/51922413/

 

1000桶酒中尋找一桶毒酒演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.