小白鼠检验毒水问题
有1000瓶水,其中有一瓶有毒,小白鼠只要嘗一點帶毒的水24小時后就會死亡,至少要多少只小白鼠才能在24小時時鑒別出哪瓶水有毒?
答案是2^n>=1000,其中n就是小白鼠的數量。
設計方案:
給1000個瓶分別標上如下標簽(10位長度):?
0000000001 (第1瓶)?
0000000010 (第2瓶)?
0000000011 (第3瓶)?
......?
1111101000 (第1000瓶)?
從編號最后1位是1的所有的瓶子里面取出1滴混在一起(比如從第一瓶,第三瓶,。。。里分別取出一滴混在一起)并標上記號為1。以此類推,從編號第一位是1的所有的瓶子里面取出1滴混在一起并標上記號為10。現在得到有10個編號的混合液,小白鼠排排站,分別標上10,9,。。。1號,并分別給它們灌上對應號碼的混合液。24小時過去了,過來驗尸吧:?
從左到右,死了的小白鼠貼上標簽1,沒死的貼上0,最后得到一個序號,把這個序號換成10進制的數字,就是有毒的那瓶水的編號。?
檢驗一下:假如第一瓶有毒,按照0000000001 (第1瓶),說明第1號混合液有毒,因此小白鼠的生死符為0000000001(編號為1的小白鼠掛了),0000000001二進制標簽轉換成十進制=1號瓶有毒;假如第三瓶有毒,0000000011 (第3瓶),第1號和第2號混合液有毒,因此小白鼠的生死符為00000011(編號為1,2的鼠兄弟掛了),0000000011二進制標簽轉換成十進制=3號瓶有毒。
答案是2^n>=1000,其中n就是小白鼠的數量。
設計方案:
給1000個瓶分別標上如下標簽(10位長度):?
0000000001 (第1瓶)?
0000000010 (第2瓶)?
0000000011 (第3瓶)?
......?
1111101000 (第1000瓶)?
從編號最后1位是1的所有的瓶子里面取出1滴混在一起(比如從第一瓶,第三瓶,。。。里分別取出一滴混在一起)并標上記號為1。以此類推,從編號第一位是1的所有的瓶子里面取出1滴混在一起并標上記號為10。現在得到有10個編號的混合液,小白鼠排排站,分別標上10,9,。。。1號,并分別給它們灌上對應號碼的混合液。24小時過去了,過來驗尸吧:?
從左到右,死了的小白鼠貼上標簽1,沒死的貼上0,最后得到一個序號,把這個序號換成10進制的數字,就是有毒的那瓶水的編號。?
檢驗一下:假如第一瓶有毒,按照0000000001 (第1瓶),說明第1號混合液有毒,因此小白鼠的生死符為0000000001(編號為1的小白鼠掛了),0000000001二進制標簽轉換成十進制=1號瓶有毒;假如第三瓶有毒,0000000011 (第3瓶),第1號和第2號混合液有毒,因此小白鼠的生死符為00000011(編號為1,2的鼠兄弟掛了),0000000011二進制標簽轉換成十進制=3號瓶有毒。
在8瓶水時,第一只混合1234,第二只混合2367,第三只混合3456。
參考:
http://blog.csdn.net/mengtnt/article/details/8477747
http://zhidao.baidu.com/link?url=dblZZigBn6dLUEe5A_K0TLnbsE83s2W9_4HXjhMPb3tG_0tF578Yx8PF9MkADhonVlguN7shreIO4BJY22aETa
總結
- 上一篇: c语言编写程序计算行列式值,新手作品:行
- 下一篇: 大学计算机vb基础知识6,计算机基础课-