米奇试药问题

问题描述

现在实验室有1000瓶药水,其中999瓶是无毒的,只有1瓶是有毒的,但是从外观上看无法分辨。喝下毒药的小白鼠,在一星期后会突然死亡,但在这之前一点症状都没有。现在需要你能够在一星期之后找出哪一瓶是毒药,请问至少需要多少只小白鼠参与实验?

解题思路

这个问题可以转化为二进制编码问题

  • 每一瓶药水用一个唯一的二进制编号,编号范围从1到1000(共1000瓶)
  • 每只小白鼠对应二进制中的一位
  • 设计实验:每只小白鼠喝那些在其对应位为1的编号的药水 alt

由于药水只喂给了对应二进制位置为1的小白鼠,一周后,哪些位置上的小白鼠死了,那么其对应的十进制编号的药水就是毒药了。比如2、3号小白鼠死亡,其二进制为 0 0 0 0 0 0 0 1 1 0 对应的十进制数字为 6,判定6号药水有毒。

结论

  • 最少需要 10 只小白鼠 即可在一周后准确找出毒药
  • 10 只小白鼠最多可以区分 =1024 种状态,足以覆盖 1000 瓶药水的所有可能
全部评论

相关推荐

不愿透露姓名的神秘牛友
2025-12-19 10:45
秋招路在何方:少了啊,我身边都是350000k*18,发三体货币
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务