兔子试毒问题

Posted 楠c

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了兔子试毒问题相关的知识,希望对你有一定的参考价值。

有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天,空间,时间都达到了最优。

以上是关于兔子试毒问题的主要内容,如果未能解决你的问题,请参考以下文章

兔子试毒问题

老鼠试毒 两轮试验

关于小鼠试毒的题目

小鼠是如何找出毒药的?

兔年说兔,那些年,我们碰到与兔相关的编程面试题

兔年说兔,那些年,我们碰到与兔相关的编程面试题