兔子试毒问题

有1000瓶药水,其中有一瓶是毒药,只要喝上一滴,一天之后必死。先提供一批兔子,找出毒药。

时间优先

直接1000个兔子,每一瓶尝试一下。

空间优先

也就是使用最少的兔子。二分法,最开始500,500一组。让一个兔子尝试其中一组,假如死了就换一只兔子,假如安全就可以让这只兔子继续尝试。这样可以排除掉一半。这样1000->500->250->125->63->32->16->8->4->2->1。尝试了10次,即使最坏情况我们只用了10个兔子,但是也用了10天。

计算机思维

1000瓶药水,最接近1000的2的幂,就是2的10次方。也就是1024。
1000瓶药水用二进制编号。
在这里插入图片描述

这样只需要10个兔子。
在这里插入图片描述

同时药水的第几位为1,就让第几个兔子喝。

举个例子,假如第1000瓶有毒。
说明喝了这瓶毒的兔子都会gg。4,6,7,8,9,10号兔子死亡。代表第几位是1,将他们组合成二进制,是1000,结果正确。
在这里插入图片描述

10个兔子,同时只需要1天,空间,时间都达到了最优。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楠c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值