码迷,mamicode.com
首页 > 其他好文 > 详细

一个有趣的问题,用10只蚂蚁从1000瓶水中找出唯一有毒的一瓶

时间:2016-05-22 10:55:59      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

其实原文说的是10只小鼠,考虑到一些生物伦理问题,小石哥把它换成了10只蚂蚁,可是蚂蚁也是生命。其实不用这么当真的,又不是真的要做这个事。

再具体说一下问题,有1000个装有水的瓶子,其中有一瓶水是有毒的,蚂蚁喝了有毒的水后会在一周的死亡,现在给你10只蚂蚁,和一周的时间,你要从这1000瓶水中找出有毒的那瓶。

作者给出了这样的答案:

把问题简化一下,3只蚂蚁,7个瓶子。

000=0,001=1,010=2,011=3,100=4,101=5,110=6,111=7

把1,3,5,7号瓶子的水给1号蚂蚁喝,2,3,6,7号瓶子的水给2号蚂蚁喝,4,5,6,7号瓶子的水给3号蚂蚁喝。3只蚂蚁对应上面二进制的每一位,如果一周后蚂蚁死了,就把它所在的位置标记为1。

假设1号2号蚂蚁死了3号活着,就是110,对应的是6号瓶子;

依次类推……,就可以找出那个毒瓶子了。由此可见,最少是死一只蚂蚁,最多3只全死。

再回到题目,因为210=1024,所以用10只蚂蚁可以从1023个瓶子里找出有毒的那个,1000个瓶子自然不在话下。

一个有趣的问题,用10只蚂蚁从1000瓶水中找出唯一有毒的一瓶

标签:

原文地址:http://www.cnblogs.com/yitan/p/5516246.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!