1. 程式人生 > >16瓶藥水一瓶有毒,去小白鼠測試哪一瓶水有毒?

16瓶藥水一瓶有毒,去小白鼠測試哪一瓶水有毒?

16瓶藥水一瓶有毒,去小白鼠測試哪一瓶水有毒?

  • 面試的時候有個面試官問我,有16瓶藥水,其中一瓶有毒,一隻小白鼠喝過之後,一天之後會死亡,要求在少於15只小白鼠的情況下判斷出哪一瓶有毒,藥水可以兌在一起,小白鼠也可以喝多瓶藥水?我在面試的時候想,如果1瓶水被2只不同的小白鼠喝掉就可以判斷出那瓶藥水有毒,但是這需要15只小白鼠,不符合條件。我又想把16只分成8對,但是陷於某個誤區怎麼也走不出來,我又想通過查詢最大值的方式來判斷,可是藥水不像數字是有順序的,最會也沒有回答出這個問題。。。

    晚上和女朋友分享這個問題的樂趣的時候,不知道那一句話突然是我茅塞頓開,其實這個問題不就是為每瓶藥水新增一個唯一的識別符號嗎,我可以讓兩隻白鼠和一瓶水,也可以讓三隻白鼠和一瓶水,換句話說其實就是資料中的排列組合,n個不同的字元可以組合2的n次方
    減去 1 個組合,所以16瓶藥水需要4只白鼠即可,如果沒有白鼠死亡,就是最後一瓶沒有白鼠喝的藥水