一、题目
1、1000瓶药水,1瓶有毒药,几只小白鼠能够找出?
答案:
Step 1、对 1,2,3,4,5,6,7,...,1000瓶水进行编号,并用
Step 2、用二进制表示:00 0000 0001, (1)
00 0000 0010, (2)
00 0000 0011, (3)
00 0000 0100, (4)
00 0000 0101, (5)
00 0000 0110, (6)
00 0000 0111, (7)
...
...
...
11 1110 1000. (1000)
其中第一个二进制位是1的给1号老鼠喝, 如00 0000 0001, (1)
00 0000 0011, (3)
00 0000 0101, (5)
00 0000 0111, (7)
同理第二个二进制位是1的给2号老鼠喝.
再换个角度说明,0010010011给第1、2、5、8只老鼠喝。
Step 3、如果第5、9、10只老鼠死亡,死亡标志位是1,即0000 1000 11 = 64+2+1=67,即第67杯水有毒。
举例(拿简单的再说明下同样道理):
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吃。
死鼠相应位标为1。如鼠1、3死,2活,那就是101=5号瓶子有毒。
二、参考
1、1000瓶药水,1瓶有毒药,几只小白鼠能够找出?
2、有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24
3、奇妙算法之毒药问题
4、试毒水(阿里巴巴腾讯搜狐笔试智力题)

3828

被折叠的 条评论
为什么被折叠?



