【大廠智力題】瓶水有毒問題

瓶水有毒問題的變型有很多:

  1. 1000瓶水有1瓶水有毒,老鼠喝一滴就會死,但是需要一月毒發,請問最少需要多少老鼠才能找到那瓶有毒的水。
  2. 1000瓶藥水,1瓶有毒,老鼠毒發24h,如何用最少的老鼠在24h內找出毒藥。

反正老鼠就不是立馬死(老鼠:我太難了)。所以在實際可行的情況下,無法利用1只老鼠測出哪瓶水有毒。

這個時候就需要動點腦筋了。如果你瞭解布隆過濾器,那麼這個問題對你來說,是比較輕鬆的事情(思路可借鑑呀)。

這道智力題,重在考察你對二進制生活中的場景的應用。

我們知道 2的10次方等於1024,1024以內的所有自然數都可以用10個數位的二進制數表示出來。1000 <= 1024。那就好辦了,

我們將1000瓶水從water[0]到water[999]分別進行編號,並轉化成10個數位的二進制數。

9 8 7 6 5 4 3 2 1 0 位數

0 0 0 0 0 0 0 0 0 0 對應編號0
0 0 0 0 0 0 0 0 0 1 對應編號1
1 1 1 1 1 0 0 1 1 1 對應編號999

我們將10只老鼠從mouse[0]到mouse[9]進行編號

  1. 讓第mouse[0]只老鼠喝第0位爲1的水
  2. 讓第mouse[1]只老鼠喝第1位爲1的所有的水
  3. 讓第mouse[2]只老鼠喝第2位爲1的所有的水
  4. 依次類推

最後可以根據老鼠的死亡情況,推算出編號n。從mouse[0]到mouse[9] 活着的老鼠對應位爲0,死了的老鼠對應位爲1。

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