天天看點

c語言:1000瓶水,有一瓶是有毒的,現共有10隻老鼠,怎麼判斷毒水?

問題:1000瓶水,其中有一瓶是有毒的,一隻老鼠喝下毒水會一天之後死亡,現在共有10隻老鼠,怎麼判斷哪一瓶水是毒水?

分析:2^10=1024,則可以考慮利用二進制求解

解:給1000瓶水依次标号1至1000,将10隻老鼠從右向左排成一列,第一瓶水讓右邊第1隻老鼠喝,第2瓶水讓第2隻老鼠喝,第3瓶水讓第1,2隻老鼠喝,則第4瓶水讓第3隻老鼠喝,......第1000瓶水依次讓第4,6,7,8,9,10隻老鼠喝,記死亡的老鼠為1,未死亡的老鼠為0,按照二進制表示數的方法求出這個數,就知道哪瓶是毒水