问题:有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) 编辑 收藏 引用 所属分类:
面试题