已知有8瓶水,其中1瓶有毒, 拿小白鼠做试验,药效发挥需要2小时时间,才能让白鼠死.现在给你2小时时间,
问:最少,需要几只老鼠?
度娘之,在CSDN上找到一个解答,冒昧引用,此是答案链接。
内容同以下。
有1000瓶水,其中一瓶有毒,小白鼠喝后24小时内死亡.问最少用多少只小白鼠可以在24小时内找出哪瓶水有毒呢.
分析:此问题的模型就是用多少二进制位可以表示1000内的一个数字.回答这个模型就简单了,1000表示为二进制表示1111101000.最大的1000用10位就中了,那么检验这1000瓶水要10只小白鼠.
那么要怎么样检验呢?1000瓶水太多了,我们用8瓶水说明情况(此时需要3只小白鼠).好像下面的图叫做平衡二叉树。如下:
所有小白鼠只喝右分支的水(要是左的话水编号要从右到左增加). 也就是 //为何?
鼠1喝水4,5,6,7的混合液体
鼠2喝水2,3,6,7的混合液体
鼠3喝水 1,3,5,7的混合液体
貌似水0没有老鼠喝,若一只白鼠都没有死则说明水0有毒了.
这样小白鼠死亡表示1,不死亡表示0。鼠1,鼠2,鼠3组成个三位二进制,
000对应水0有毒
001对应水1有毒
…
111对应水7有毒
1000瓶水和这个原理一样用十个小白鼠就找到哪瓶水有毒了.。