算法:挑选出100瓶药水中有且仅有1瓶毒药水所需的最少老鼠数量?

挑选出100瓶药水中有且仅有1瓶毒药水所需的最少老鼠数量?

问题描述

100 瓶水其中有一瓶有毒,用老鼠试毒老鼠试后 7 天会死掉,需要多少只老鼠才能试出哪瓶水有毒?

题目解析

第一步:编码

  • 给这 100 瓶水编号,1 到 100。
  • 找来七只老鼠,给它们编号:A B C D E F G。把 G 当作最低位,A 当作最高位,它们各自有两个状态分别是“活”和“死”。把“活”当作 0,“死”当作 1,那么它们就可以组成一组二进制数。
    在这里插入图片描述
  • 例如:

在这里插入图片描述
第二步:喂药

  • 比如39,二进制就是100111,我加个0就是0100111,那么就把水喂给二、五、六、七号老鼠
  • 比如67就是1000011,那么就是把水喂给一、六、七号老鼠
  • 比如3就是11,补上0的位置就是0000011,那么就把水喂给六、七号老鼠

第三步:计算

  • 七天后,看七个老鼠哪个活着哪个死了
  • 比如二、三、五、六、七都死了,那么写成二进制就是0110111,第一个0其实是占位的,那么就是110111,换算成十进制就是55

题目

有1000个一模一样的瓶子,其中有999瓶是普通的水,有1瓶是毒药。任何喝下毒药的生命都会在一星期之后死亡。现在你只有10只小白鼠和1个星期的时间,如何检验出哪个瓶子有毒药?

解析

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值