1000桶酒有一桶是毒酒問題


原題:1000桶酒,其中1桶有毒。而一旦吃了,毒性會在1周后發作。問最少需要多少只老鼠可在一周內找出毒酒。

  某日,某大公司某技術問我的一個問題,當時一咯噔,哎。沒想出來。他還提示我其實網上到處都有這個很經典的問題,我硬是沒想出來呀,怪自己太笨。事后硬是不網上查。來吧,言歸正傳,談談后來我是怎么想的吧:

      首先我會想用到999只老鼠,每只都給他灌點酒,一個禮拜看結果,肯定是能解決問題,問題是我也太殘忍了吧,哥做不到啊。

      那怎么辦呢?

  我想還是一步一步用列舉法吧,看下能不能找着規律呢?試試:

     列完部分之后是不是發現了某些情況呢?嘿嘿。是的,其實我們發現”結論“列都是由老鼠的”生死排列組合“情況來得出來幾號酒是有毒的,相信大家一眼就看出來了,這個時候你就完成了大半思路了。

     這個時候我們很容易就聯想到可憐的小耗子死和活不就是兩種狀態嗎,結合上面說的:這個不就是和計算機里面的1和0相對應嘛(但凡有點計算機常識的應該都有這種感覺),好啦。這個時候答案已經顯而意見了,用小耗子的生死狀態來表達完這1000桶可惡的酒,需要多少呢?2^10,即10只可以表達1024桶,那表達1000桶綽綽有余,而2^9,9只肯定表達不完。答案就是:10只小耗子就可以把毒酒甄別出來呢。

     現在哥就開始動手來給老鼠喂酒了,雖然哥於心不忍:

     需要1000中喂法,於是就給酒上號吧:0000000000   0000000001   0000000010 .........1111111111

     第一步:假設第一桶酒是毒酒,第一桶酒就不給這10只老鼠喂了。

     第二步:假設第二桶酒是毒酒,第二桶就給第一只老鼠喂點。

     第三步:假設第三桶酒是毒酒,第三桶就給第二只老鼠喂點

      ....

     第千步:假設第千桶酒是毒酒,給這10只都喂上。

     坐等1周后小耗子的死亡情況:

  比如:

     1周后發現全死了,尼瑪慘不忍睹啊。說明最后一桶有毒;

     1周后如果發現死亡情況是:死死活活活活活活死死 = 1100000011桶酒是毒酒,即第770桶酒是毒酒。

 

     原來真很簡單,為什么當時那小伙兒問我的時候我沒想出來呢?555~~

     這個冬天有點冷,心情也很低落。

     第一次寫博客,寫了很多啰嗦的話,就當是自己的隨筆了。

 

  

      

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM