千鼠试毒

问题描述:有1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。现在我们用小老鼠做实验,要在1周后找出有毒的酒。试问最少用多少只老鼠可以找出毒药?

解析:由题可知,喝了这些酒的老鼠,一周后有正常(没有喝到含有毒药的)、死亡(喝到了含有毒药的)两种状态,刚好对应二进制中的0和1,因此,可用二进制来求解。
现假设只有15桶酒,一桶有毒,同求。15转成二进制为1111.分别表示为:0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、1111。成二进制后,右起第一位为1的,分为第一组,右起第二位为1的,分为第二组,右起第三位为1的,分为第三组,右起第四位为1的,分为第四组。取4只老鼠,分别喂食这几组的水,并且标上对应的编号,将这四只老鼠组成二进制数,最终死亡的标为1,存活标为0.。最终共有15种结果(不包括0000),分组情况如下

第一组 0001 0011 0101 0111 1001 1011 1101 1111
第二组 0010 0011 0110 0111 1010 1011 1110 1111
第三组 0100 0101 0110 0111 1100 1101 1110 1111
第四组 1000 1001 1010 1011 1100 1101 1110 1111
假设最终1号和3号老鼠死亡,2号和4号老鼠存活,则说明有毒的那一桶在第一组和第三组中,不在第二和第四组中,此时可使用排除法,无毒的加粗表示。

第一组 0001 0011 0101 0111 1001 1011 1101 1111
第二组 0010 0011 0110 0111 1010 1011 1110 1111
第三组 0100 0101 0110 0111 1100 1101 1110 1111
第四组 1000 1001 1010 1011 1100 1101 1110 1111

在从第一和第三组中排除掉第二组合第四组中包含有的。标记为如下

第一组 0001 0011 0101 0111 1001 1011 1101 1111
第二组 0010 0011 0110 0111 1010 1011 1110 1111
第三组 0100 0101 0110 0111 1100 1101 1110 1111
第四组 1000 1001 1010 1011 1100 1101 1110 1111

排除完了无毒的之后,再从第一和第三组中寻找相同的编号(即有毒的那瓶),可得最终结果

第一组 0001 0011 0101 0111 1001 1011 1101 1111
第二组 0010 0011 0110 0111 1010 1011 1110 1111
第三组 0100 0101 0110 0111 1100 1101 1110 1111
第四组 1000 1001 1010 1011 1100 1101 1110 1111

标为斜体的(0101)即为有毒的那一瓶。

总结:解题思路:先分析得出最终结果只有两种结果,刚好对应二进制0和1,使用二进制表示,然后进行分组,再从结果中排除掉无毒的,再从有毒的那些组中寻找相同的编号,即可求出最终的结果。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值