大家好,這裏是三歲,遇到了一個那難題,三歲渣渣做算法題,思路已有過程還在考慮,頭一直禿
這是一個悲傷的故事,一天有人往8個杯子中的一個投了毒,已經知道毒藥7天左右發作,現有3只小白鼠,有一個星期的時間,要得到哪一個杯子裏面有毒
這題目真的和題目一有毒。
百度到了一個好結果:
把3只老鼠變成肉泥,然後等分成8份放進瓶子裏,7天后查看有沒有長蛆,沒有的那個就是有毒的。
這個答案也是真的牛,只想問一句,你是秀兒嗎?
思路
可以逐個排序
瓶子 | 老鼠 |
---|---|
1號 | 第一隻 |
2號 | 第二隻 |
3號 | 第三隻 |
4號 | 第一、二隻 |
5號 | 第一、三隻 |
6號 | 第二、三隻 |
7號 | 第一、 二、三隻 |
8號 | 都不喫 |
這樣子不同的老鼠giao了就代表不同的瓶子有毒,如果都沒有giao那麼8號有毒
emmm好有道理啊!
怎麼樣去表達?
禿!!!
思路2
上面的有明顯問題就是這個順序比例不好把控,用計算機語言難以表達,而且容易錯亂。
有沒有什麼好一點的辦法呢?
那麼肯定是有的,就是採用二進制的辦法
疑惑.jpg
不行,三歲老規矩上圖!
3只老鼠一隻表示一位
第一隻試第一位是1的也就是 2,4,6,8
第二隻試第二位是1的也就是 3,4,7,8
第三隻試第三位是1的也就是 5,6,7,8
只要有那隻giao 了就代表響應位數爲1的十進制值加一
比如第一隻和第三隻giao了,那麼就相當於第三位和第一位爲1
就是: 101(二進制) = 5(十進制)+1
第6瓶是毒藥
原理基本上就是終上所述,至於怎麼實現,emmm三歲禿頭努力中,如有結果會把鏈接放在下面,如有大佬有思路想法,歡迎打擾。謝謝大家的關注!!!