大家應該都聽說過這個老題目:有 1000 個一模一樣的瓶子,其中有 999 瓶是普通的水,有一瓶是毒藥。任何喝下毒藥的生物都會在一星期之後死亡。現在,你只有 10 只小白鼠和一星期的時間,如何檢驗出哪個瓶子裡有毒藥?
這個問題的答案也堪稱經典:把瓶子從 0 到 999 依次編號,然後全部轉換為 10 位二進位制數。讓第一只老鼠喝掉1到1000所有二進位制數右起第一位是 1 的瓶子,讓第二隻老鼠喝掉所有二進位制數右起第二位是 1 的瓶子,等等。一星期後,如果第一只老鼠死了,就知道毒藥瓶子的二進位制編號中,右起第一位是 1 ;如果第二隻老鼠沒死,就知道毒藥瓶子的二進位制編號中,右起第二位是 0 ……每只老鼠的死活都能確定出 10 位二進位制數的其中一位,由此便可知道毒藥瓶子的編號了。
現在,有意思的問題來了:
老鼠試毒問題
7瓶水1瓶有毒3只老鼠,怎麼找有毒的水,再加個條件,必須要求第二天出結果 二分查詢思路,每次均分兩組,每組各取一滴水混合成新溶劑餵給老鼠,繼續對導致老鼠死亡的一組水進行同上操作。假如是第1瓶有毒,過程演繹如下,第一只老鼠死於前一堆 mid 0 6 2 3,即服用了第1 2 3 4瓶的混合溶劑 第二隻...
經典智力題 老鼠試毒
1 1000瓶毒藥要至少多少只老鼠,假設每只老鼠吃了藥之後,如果中毒會24小時內毒發而死,才能找出具體的哪一瓶?答案是至少10只,需要將藥混合起來,需要喂一輪。位運算,每乙隻老鼠都可以當做乙個二進位,代表0和1,0代表老鼠沒事,1代表老鼠死了 根據2 10 1024,所以至少10個老鼠可以確定100...