用7只老鼠從111瓶藥檢測出1瓶毒藥
不久前刷貼吧的時候又雙叒叕看到了這個問題,大致內(nèi)容就是用7只老鼠檢測111瓶藥劑,選出唯一的一瓶毒藥,且毒性一小時后發(fā)作,用最短的時間檢測出來。這應(yīng)該算比較久遠(yuǎn)的題了吧,百度的回答基本都是基于二進(jìn)制進(jìn)行解答,答案也是對的,但仍有相當(dāng)一部分人難以理解,所以,本著求(chi)真(bao)務(wù)(cheng)實(de)精神,將此問題重新簡單化地做一遍。
首先,這問題的關(guān)鍵就是在于怎么用斯巴達(dá)耗子們檢測或者說是喂食方案是啥個樣子,當(dāng)時貼吧的那個貼的評論里大部分都是糾結(jié)這個問題。
那么先把問題簡單化一點,用3只耗子檢測8瓶藥劑。先引入一個集合的概念,有集合{1,2,3}對應(yīng)這耗子1,耗子2,耗子3,它的子集就有——空集,{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}這樣8個,依次分別對應(yīng)藥劑不喂食,只喂食耗子1,只喂食耗子2……那么這樣,喂食的方案就解決了,用方案依次對應(yīng)試劑1到8,試劑1不喂食,試劑2只喂食耗子1……

于是,一小時以后,如果一只耗子都沒嗝屁,也就是說,一只耗子都沒有喝到這瓶毒藥,那么,試劑1是毒藥,因為只有它的方案,能保證所有耗子們都不接觸。但如果只有耗子2存活了呢?依此看,有瓶毒藥,耗子1和3喝了,耗子2沒喝,這個方案就是集合{1,3},對應(yīng)的就是6號試劑。
集合的舉例到此為止,還是回歸二進(jìn)制的解題方案,思路大致和集合一樣,1表示喂食,0表示不喂食。然后喂食方案就有0000000~1111111,128種,對應(yīng)1~128號試劑的喂食方案,這樣也就解釋了為什么n只老鼠能夠檢測2^n瓶藥劑,而題中只要求111瓶就可以。
如果說一小時后的結(jié)果是耗子1、3、5、7沒了,換句話說,一瓶毒藥就只有1、3、5、7喝了,對應(yīng)方案1010101。

那么,這瓶試劑就是86。
以此類推……
這樣,唯一的一瓶毒藥就能在最短時間里取得。
是不是很簡單