算法藥劑問題

1000瓶藥劑,其中一瓶有毒,喝了立即死亡,小白鼠實驗那一瓶有毒?

喝了立即死亡,一隻小白鼠從1號喝到底,喝到哪兒死,哪兒有毒,簡單。

1000瓶藥劑,其中一瓶有毒,毒性一個小時發作。要在一個小時之後,找出哪一瓶有毒?

找來999只小白鼠,一隻一瓶也不用搶,一小時之後那隻死了對應喝的那瓶有毒,簡單。

增加要求,最少多少隻小白鼠,一個小時之後,可以找出有毒的藥劑?

藥劑有毒/無毒,二進制,0和1的問題,假設0是五毒,1是有毒。

舉個例子:10瓶藥劑,其中1瓶有毒,1小時毒性發作,至少需要多少小白鼠1小時之後找出有毒的藥劑?

把瓶子的序號轉換成二進制,10<16,也就是要4只小白鼠,2*2*2*2,分別取爲abcd。

開始試驗:

默認全部都是無毒的,小白鼠喝完之後狀態應該是0000。每隻小白鼠都要喝自己對位編號爲1的藥劑。

白鼠a喝8、9、10號藥劑

白鼠b喝4、5、6、7號藥劑

白鼠c喝2、3、6、7、10號藥劑

白鼠d喝1、3、5、7、9號藥劑

數據推演驗證結果:

如果1號有毒,白鼠(abcd)死亡情況就是0001,轉換成二進制就是1號;

如果2號有毒,白鼠(abcd)死亡情況就是0010,轉換成二進制就是2號;

如果3號有毒,白鼠(abcd)死亡情況就是0011,轉換成二進制就是3號;

......

如果8號有毒,白鼠(abcd)死亡情況就是1000,轉換成二進制就是8號;

如果9號有毒,白鼠(abcd)死亡情況就是1001,轉換成二進制就是9號;

如果10號有毒,白鼠(abcd)死亡情況就是1010,轉換成二進制就是10號;

推演論證:

1000只小白鼠,小於2^{10}次方1024,所以至少要10只小白鼠,在一個小時之後可以找到有毒的藥劑。

也可以默認全部都是有毒的,小白鼠不喝自己編號對位的藥劑,結果亦然。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章