1000瓶水,其中有一瓶有毒,小白鼠喝后24小时会死忙。请问最少多少只老鼠,可以在24小时测出哪瓶有毒。

答案:最少需要[log21000]=10只小白鼠

 

试验方法:

1000瓶水,分别编号从11000,并用10位二进制表示。

10只老鼠,编号从09

喝药策略:

对于编号为X的水, 二进制表示为b9b8b7b6b5b4b3b2b1b0。如果bi=1i=0,...,9),则表示第i个小老鼠要喝这瓶水;否则,不喝。

如:ID=7的水,二进制表示为0000000111,则表示第012只老鼠要喝这瓶水,6-9小老鼠不喝。

结果:

假设编号为X的水为毒水(二进制表示为b9b8b7b6b5b4b3b2b1b0)。

如果第i个小白鼠活着,则说明第i个小白鼠没喝这瓶水,则bi=0

同理,如果第i个小白鼠死了,则说明第i个小白鼠喝了这瓶毒水,则bi=1

根据10只小白鼠的活(0)或死(1)的状态,我们就可以唯一确定毒水的编号。