随笔-0  评论-0  文章-24  trackbacks-0
      问题:有1000个一模一样的瓶子,其中有999瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在有一些老鼠(无穷),给你一个星期时间,问最少需要几只老鼠可以找出这瓶有毒药的水?
      解答:2 ^ 10 = 1024 > 1000,所以,最少需要10个老鼠。
      将1-1000表示为二进制形式:
           1234   5678
      1   0000   0001
      2   0000   0010
      3   0000   0011
      4   0000   0100
      5   0000   0101
      6   0000   0110
      7   0000   0111
      8   0000   1000
      9   0000   1001
    10   0000   1010
    11   0000   1011
    12   0000   1100
    13   0000   1101
    14   0000   1110
    15   0000   1111
    ……
    如上所示:1号老鼠喝第一位为1的水
                  2号老鼠喝第二位为1的水
                  3号老鼠喝第三位为1的水
                  4号老鼠喝第四位为1的水
                  5号老鼠喝第五位为1的水
                  6号老鼠喝第六位为1的水
                  7号老鼠喝第七位为1的水
                  8号老鼠喝第八位为1的水
                  9号老鼠喝第九位为1的水
                10号老鼠喝第十位为1的水
      如果i号老鼠死了,则第i位为1。否则,为0。最后得到的数字即为所求。
      扩展:如果你有两个星期的时间(换句话说你可以做两轮实验),为了从1000个瓶子中找出毒药,你最少需要几只老鼠?注意,在第一轮实验中死掉的老鼠,就无法继续参与第二轮实验了。
      提示:用三进制数表示即可。
      
posted on 2012-10-25 19:30 zhuxin 阅读(3509) 评论(0)  编辑 收藏 引用 所属分类: 面试题

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理