兔子试毒问题
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天,空间,时间都达到了最优。
以上是关于兔子试毒问题的主要内容,如果未能解决你的问题,请参考以下文章