有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瓶水和这个原理一样用十个小白鼠就找到那瓶水有毒了.
1000瓶水和10只小老鼠
最新推荐文章于 2023-11-20 16:33:36 发布