其实原文说的是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个瓶子自然不在话下。
时间: 2024-11-05 12:25:37