目录
一、问题概述
有1000瓶药物,但其中有一瓶是有毒的,小白鼠吃了一个星期以后就会死掉!请问,在一个星期内找出有毒的药物,最少需要多少只小白鼠?
二、解题思路
将1000瓶药物编号为1~1000,转化为二进制后,对应编号为00000 00001~11111 01000
假设药物二进制编号的每一位对应1只老鼠,需要选取10只老鼠,将其编号为1~10
下面将对老鼠进行喂药操作,根据药物编号来决定每瓶药物喂哪只老鼠。遵循如下规则:药物二进制编号为1的位所对应的老鼠喝下该药。于是将会出现如下情况:
药物编号 | 药物二进制编号 | 吃药老鼠编号 |
---|---|---|
1 | 00000 00001 | 1 |
2 | 00000 00010 | 2 |
3 | 00000 00011 | 1,2 |
4 | 00000 00100 | 3 |
5 | 00000 00101 | 3,1 |
…… | …… | …… |
1000 | 11111 01000 | 10,9,8,7,6,4 |
由于每瓶药产生的二进制编号是唯一的,因此吃每瓶药老鼠的情况是唯一的,即可根据七天后老鼠的死亡情况唯一地确定毒药的编号。
例如3号与1号老鼠死亡,即可确定毒药是5号。
因此要在一个星期内找出有毒的药物,最少10只小白鼠。