1000瓶试剂,其中一瓶有毒,最少需要多少只小白鼠能找出有毒的试剂

借鉴博客:http://blog.csdn.net/shaolianbo/article/details/8650061
题目:
1000瓶试剂,其中有1瓶有毒,如果小白鼠服用有毒的药,则24小时后死亡。要求使用尽可能少的小白鼠,在24小时内找出有毒的药。

思路:
这是一道典型的二分法查找的算法题,一般情况下,我们使用的都是串行的二分法,如果这道题没有时间限制,我们就可以使用串行的二分法找到毒药,步骤如下:
(1)首先,给试剂编号,1~1000
(2)给第一只小白鼠喂1~500号混合的试剂,等待24小时,
(3)如果小白鼠死亡,则给第二只喂1~250号混合的试剂,否则,喂501~750号试剂
(4)依次进行二分,可以看出,这样最多需要10只小白鼠就能找到毒药。
但是,这道题有时间限制,所以我们要同时给一定的小白鼠喂药,然后从小白鼠的死亡情况找出毒药。步骤如下:
(1)第一只小白鼠:1~500
(2)第二只小白鼠:1~250 + 501~750
(3)第三只小白鼠:1~125 + 251~500 + 501~625 + 751+875
……….
依次下去,由于2^9 < 1000 < 2^10,所以需要10只小白鼠才能找到毒药。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值