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

有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个瓶子自然不在话下。

posted @ 2016-05-22 10:07  小石浮木  阅读(815)  评论(0编辑  收藏  举报