1000瓶毒水的问题
題目:現(xiàn)有1000瓶水其中有1瓶是有毒的,現(xiàn)在有n只小白鼠,小白鼠如果喝了毒水,會(huì)在21小時(shí)死亡,現(xiàn)在有24小時(shí)的時(shí)間,請(qǐng)問(wèn)如何使用最少數(shù)目的小白鼠,在限定的時(shí)間內(nèi)找到哪瓶水有毒?
解題思路:
1000<2^10=1024,我們對(duì)1000瓶水進(jìn)行編號(hào)1~1000,選擇10只小白鼠標(biāo)號(hào)為a0,a1,a2,...,a9;從而有將每瓶水的標(biāo)號(hào)轉(zhuǎn)化成二進(jìn)制數(shù)后,對(duì)應(yīng)的二進(jìn)制數(shù)的每一位都與一只小白鼠相對(duì)應(yīng)。
順序掃描每瓶水,對(duì)于每瓶水根據(jù)其標(biāo)號(hào)將其轉(zhuǎn)換成二進(jìn)制數(shù),根據(jù)白鼠和二進(jìn)制每一位的對(duì)應(yīng)情況,對(duì)于相應(yīng)位為1的白鼠,我們讓其喝下當(dāng)前檢驗(yàn)的水,否則不做操作。例如:
對(duì)于10號(hào)瓶的水:
| a9 | a8 | a7 | a6 | a5 | a4 | a3 | a2 | a1 | a0 |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 |
這樣對(duì)于所有的1000瓶水掃描一遍之后,21小時(shí)后死去的白鼠,必定喝過(guò)有毒的那瓶水,也就意味著有毒的那瓶水的標(biāo)號(hào)轉(zhuǎn)換成二進(jìn)制后對(duì)應(yīng)所有死去的小白鼠的位置上位1,其他位均為0,故而我們能唯一確定有毒的水的標(biāo)號(hào)。
例如:
在對(duì)1000后瓶水都做了以上操作之后,a4、a3和a1死了,則有有毒水的標(biāo)號(hào)轉(zhuǎn)換成二進(jìn)制數(shù)后為0000011010=16+8+2=26即第26瓶水有毒。
總結(jié)
以上是生活随笔為你收集整理的1000瓶毒水的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php 打印对象详细信息,php打印显示
- 下一篇: 【思维与逻辑】有1000瓶药水,但其中有