挑选出100瓶药水中有且仅有1瓶毒药水所需的最少老鼠数量
??一年一度的秋招如火如荼的進行,博主本人雖然沒有在秋招中海投簡歷,也沒有瘋狂的筆試面試環節(很弱雞),但還是幫兄弟們打了一波輔助。
問題描述
??在100瓶藥水中只有1瓶是毒藥,藥水無色無味,但只要老鼠喝完毒藥水就會在24內小時毒發,假設老鼠可以不斷地投喂藥水,如何用最少的老鼠在24小時內找出毒藥?
解題思路
-
最開始的想法是找到100只老鼠,逐一去喝,即可找到毒藥水是哪瓶,這是可行但不符合題意的解法。
-
可以考慮用2進制來表示1~100之間的數的方法對老鼠進行0-1編號來確定哪一個瓶藥水是毒藥水。
-
將十進制數注逐一轉換為1:1,2:10,3:11,4:100?,100:11001001:1,2:10,3:11,4:100\cdots,100:11001001:1,2:10,3:11,4:100?,100:1100100諸如此類的二進制數,顯然最大值100對應的二進制數是7位,即27=128>100,26=64<1002^7=128>100,2^6=64<10027=128>100,26=64<100。
-
老鼠分別為A,B,C,D,E,F,G:
-
A老鼠喝編碼格式為1000000的藥水
B老鼠喝編碼格式為0100000的藥水
C老鼠喝編碼格式為0010000的藥水
D老鼠喝編碼格式為0001000的藥水
E老鼠喝編碼格式為0000100的藥水
F老鼠喝編碼格式為0000010的藥水
G老鼠喝編碼格式為0000001的藥水 -
分別從1開始到100,按照藥水的二進制序列對老鼠的編號一一對應的進行投喂藥水,比如第24瓶藥水的二進制是0011000,則分別對C和D號老鼠進行投喂,最后過了24小時候,查看哪些老鼠出現毒發現象,比如B、C、D號老鼠毒發,則說明0111000號瓶中有毒,將二進制轉化為十進制數,結果為第56瓶中的藥水是毒藥水。
答案總結
??綜上所述的分析,像這類題型的解答方法,將老鼠編號為二進制的位數,最后以死亡老鼠的編號來確定哪一個編號的藥水是毒藥水,是這類題型的解題思路。
總結
以上是生活随笔為你收集整理的挑选出100瓶药水中有且仅有1瓶毒药水所需的最少老鼠数量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VB语言通用基础语句
- 下一篇: c语言程序设计 银行整存整取,《C语言程