老鼠毒药问题

老鼠毒药问题

描述

第一种: 1000瓶药水,只有一瓶有毒,小老鼠喝下去之后会在1小时死亡。问给你一小时和10只老鼠怎样检测出那瓶是毒药?
第二种: 1000瓶药水,只有一瓶有毒,小老鼠喝下去之后会在1小时死亡。问给你一小时时间最少需要多少只老鼠才能检测出那瓶是毒药?

方案

上面两种的解题思路是一样的,本文以第一种为例。
提示:老鼠喝了药水后只有两种情况,要么活要么死,10只老鼠有1024种情况,根据1024种情况可判断出哪瓶药水有毒。

  1. 给药水按照二进制的方式进行标号。
    如下
    药水1:0000 0000 00
    药水2:0000 0000 01
    药水3:0000 0000 10

    药水1000:1111 1001 11

  2. 将10个老鼠排序,当做二进制中的1。
    1号老鼠:第1位的1
    2号老鼠:第2位的1
    3号老鼠:第3位的1

    10号老鼠:第10位的1

  3. 根据药水二进制的1所在的位置,将药水喂给相应的老鼠。
    药水1:0000 0000 00,由于对应的二进制都是0,所以这瓶不用喂给老鼠
    药水2:0000 0000 01,第1位是1,喂给1号老鼠

    药水27:0000 0110 10,第2、4、5位是1,喂给2、4、5号老鼠

    药水1000:1111 1001 11,第1、2、3、6、7、8、9、10位是1,喂给1、2、3、6、7、8、9、10号老鼠

  4. 观察有哪些老鼠会死掉,将死掉的老鼠换成二进制的1,然后根据1所在的位置找到对应的药水。
    若没有老鼠死掉,则药水1是毒药;
    若2、4、5号老鼠死掉,则二进制标号0000 0110 10的药水27是毒药;

第二种情况大家自己分析即可,我就不在这累述了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值