http://blog.sina.com.cn/s/blog_49e64814010009vx.html
有1000瓶水,其中有一瓶有剧毒(假设哪怕一个毒药分子在里面也能致命),现在给你10只狗在24小时内通过狗试药的方式鉴定出来哪瓶药有 毒。
情况1:假设狗服药后2小时内即可判断是否中毒,鉴别方案有哪些?
情况2:假设狗服药之后20小时才能判断是否中毒,鉴别方案又是什么?
先说较快的中毒那种,简单的这样说:
拿一只狗出来喝掉前500瓶兑的水
如果挂了说明在这500瓶当中,如果没挂说明在另外500瓶中
接下来换一只狗在剩下的当中选一半兑起来喝
可以继续减半
如此则得:
1000
500
250
125
63
32
16
8
4
2
1
正好十条
这样说起来比较简单的能够理解
拿一只狗出来喝掉前500瓶兑的水
如果挂了说明在这500瓶当中,如果没挂说明在另外500瓶中
接下来换一只狗在剩下的当中选一半兑起来喝
可以继续减半
如此则得:
1000
500
250
125
63
32
16
8
4
2
1
正好十条
这样说起来比较简单的能够理解
应该是三轮阿
第一轮
90 90 90 ......100十一组(狗10)
第二轮
a,9,9.,....10十一组 (狗10)
b,9,9,9。。。。9十组(狗9)
第三轮
a1 1,1,1....,1十组(狗10)
a2 1,1,1....,1九组 (狗9)
b1 1,1,1....,1九组 (狗9)
b2 1,1,1....,1九组 (狗8)
第一轮
90 90 90 ......100十一组(狗10)
第二轮
a,9,9.,....10十一组 (狗10)
b,9,9,9。。。。9十组(狗9)
第三轮
a1 1,1,1....,1十组(狗10)
a2 1,1,1....,1九组 (狗9)
b1 1,1,1....,1九组 (狗9)
b2 1,1,1....,1九组 (狗8)
再说情况2,
10只狗蹲成一排,形成一个二进制显示器,死了算1,不死算0
1000瓶水用10位二进制表示,哪一位的数字为1,就给对应的那只狗喝水,
20小时后,死了几只狗,写成二进制数,对应编码的那瓶水有毒