原文链接:https://blog.csdn.net/dam454450872/article/details/104438382

题目

有 n 桶牛奶,其中有 1 桶有问题,老鼠喝了后第二天会死掉。如何在最短时间内用最少的老鼠测出有问题的那瓶牛奶?

答案

如果 n 是 2 的整数次幂,就是 n 转换为二进制后的位数减一。如果 n 不是 2 的整数次幂,就是 n 转换为二进制后的位数。

即下面的计算

log2(n),如果是整数,那这个整数就是最少的老鼠。如果有小数,整取后并加1后的值为最少的老鼠数

操作方案

为了方便演示假设 n = 8,转换成二进制位 1000,可知需要最少的老鼠是 4 只,但因为 8 是 2 的整数次幂,其实最后只需要 3 只老鼠,我们先用 4 只老鼠说

第一步

给 8 桶牛奶用二进制编号

第 1 桶牛奶 0001

第 2 桶牛奶 0010

第 3 桶牛奶 0011

第 4 桶牛奶 0100

第 5 桶牛奶 0101

第 6 桶牛奶 0110

第 7 桶牛奶 0111

第 8 桶牛奶 1000

第二步

4 只老鼠按顺序排好,面对着牛奶对应的二进制编号,每桶二进制编号为 1 对应的老鼠喝牛奶

老鼠 1 喝第 8 桶的牛奶

老鼠 2 喝第 4、5、6、7 桶的牛奶

老鼠 3 喝第 2、3、6、7 桶的牛奶

老鼠 4 喝第 1、3、5、7 桶的牛奶

第三步

第二天后把这 4 只老鼠还按昨天的顺序排好,死了的老鼠标记为 1,没有死的老鼠标记为 0,这这样 4 只老鼠就组成了一个二进制的数,与之对应的牛奶编号就是有毒的那桶。比如老鼠 2 和老鼠 3 死了,对应的二进制编号为 0110,那就说明第 6 桶牛奶有毒

我们知道 n 为 2 的整数次幂的话,对应的二进制只有在最高位为1,也就是对应的第 n 桶牛奶只有一只老鼠喝,我们可以把这个老鼠省下来,用剩下的老鼠喝其余桶中的牛奶。如果这些老鼠都没死,那就说明是第 n 桶牛奶有毒了。

后记

这种题考查了对二进制的应用,也有很多变种面试题,但万变不离其宗,掌握了方法方可以不变应万变

这是一位网友的微信支付一面中遇到的题,我看到后,一点思路都没有,但有的朋友直接就把方案说出来了,可见平时积累的重要性

如何用最少的老鼠试出有毒的牛奶?相关推荐

  1. 面试官:如何用最少的老鼠试出有毒的牛奶?

    面试题 有 n 桶牛奶,其中有 1 桶有问题,老鼠喝了后第二天会死掉.如何在最短时间内用最少的老鼠测出有问题的那瓶牛奶? 答案 如果 n 是 2 的整数次幂,就是 n 转换为二进制后的位数减一.如果 ...

  2. 面试:如何用最少的老鼠试出有毒的牛奶?

    面试题 有 n 桶牛奶,其中有 1 桶有问题,老鼠喝了后第二天会死掉.如何在最短时间内用最少的老鼠测出有问题的那瓶牛奶? 答案 如果 n 是 2 的整数次幂,就是 n 转换为二进制后的位数减一.如果 ...

  3. 2021-08-27 思考:1000瓶药水,1瓶有毒,老鼠毒发24h,如何用最少的老鼠在24h内找出毒药?

    题目: 现在有1000瓶药水,其中一瓶有毒,一只老鼠喝了在24h后会准时死亡,药水无色无味,如何用最少的老鼠在24h内找出毒药? 分析: 时间限制为24h,说明我们只有一次喂老鼠的机会,需要一波找出来 ...

  4. 2019-02-13 思考:1000瓶药水,1瓶有毒,老鼠毒发24h,如何用最少的老鼠在24h内找出毒药?

    题目: 现在有1000瓶药水,其中一瓶有毒,一只老鼠喝了在24h后会准时死亡,药水无色无味,如何用最少的老鼠在24h内找出毒药? 分析: 时间限制为24h,说明我们只有一次喂老鼠的机会,需要一波找出来 ...

  5. 1000瓶有毒的水,用多少只老鼠可以试出有毒的那瓶

    文章目录 信息论解法 二分法解法 二进制解法 信息论解法 信息论解法得不到过程,只能得到结论 老鼠只有两种结果,死或者不死,当这两种可能相等的时候,可以得到最大的信息量,log2 = 1比特.设法让每 ...

  6. [面试题]1000瓶水中有1瓶是有毒的,问需要多少只老鼠才能试出那瓶有毒?

    问题描述: 1000瓶水里面只有1瓶是有毒的,毒发时间为1个小时,问需要多少只老鼠才能在1小时后试出那瓶有毒. 相关资料: Bloom Fliter 算法 参考思路: 210 = 1024 > ...

  7. 笔试加分题:有16瓶水,其中只有一瓶水有毒,小白鼠喝一滴之后一小时会死。请问最少用() 只小白鼠,在1小时内一定可以找出有毒的水?

    原题: https://www.nowcoder.com/questionTerminal/a09c0eecbf684b0cba2ad0be32b7988e?orderByHotValue=1& ...

  8. 8个试剂,其中一个有毒,最少多少只小白鼠能检测出有毒试剂——分而治之思想...

    面试题:8个试剂,其中一个有毒,最少多少只小白鼠能检测出有毒试剂 方法1: 用3只小鼠,能组合成8种状态. 第一只喂食[1.3.5.7]四只试剂 第二只喂食[2.3.6.7]四只试剂 第三只喂食[4. ...

  9. 1000瓶水其中有一瓶水有毒,有10只老鼠并且只要老鼠喝了有毒的水必死。请问怎样通过一次实验找出有毒的那瓶水。

    1000瓶水其中有一瓶水有毒,有10只老鼠并且只要老鼠喝了有毒的水必死.请问怎样通过一次实验找出有毒的那瓶水. . 这道题知识点:二进制. 解题思路:2的10次方等于1024,1024以内的所有自然数 ...

最新文章

  1. pyrender 安装
  2. 文字收缩下面半透明效果
  3. 软件设计文档国家标准_GB8567--88
  4. geoserver native JAI error 问题解决方法
  5. 【2019牛客暑期多校训练营(第五场)- E】independent set 1(最大独立集,状压dp)
  6. Liaoning Province--保三成功
  7. 作者:程文亮(1989-),男,华东师范大学数据科学与工程研究院硕士生
  8. python打印json_Python漂亮打印JSON
  9. stl sort分析
  10. Redis: 为行情数据库设计键值
  11. JAVA WBE入门之HTML的使用(超详细,必看)附实例和代码
  12. Axure RP 7.0初学篇01-------安装
  13. 360搜索核心算法,被K后如何恢复?
  14. 如何减小电压跟随器输出电阻_电压跟随器秘笈:LM358电压跟随器+运放问题
  15. NVR(网络硬盘录像机)以及其他相近名词DVR、DVS、NVS
  16. 凝思系统服务器系统版本,凝思操作系统Custom Linx安装教程
  17. 企业微信聊天工具栏怎么开启?如何调整位置?
  18. IDEA中配置数据库连接
  19. layui文件上传(头像上传)
  20. matlab示波器怎么求值,matlab示波器用法

热门文章

  1. AVD安装XPOSED环境
  2. hⅰgh怎么读音发音英语_gh和ph的发音
  3. 集团化企业的电子印章管理模式
  4. 消防应急照明和疏散指示系统在综合大楼(楼宇建筑)的研究与应用
  5. decimal在java怎么用?
  6. rtl高效定位问题的方法——verilog加打印
  7. 2021年,shopee虾皮一件代发模式的优势和背后风险是什么?
  8. 移动硬盘文件丢失要如何找回呢?
  9. 2021-11-08FGUI 使用
  10. 白帽子挖洞第II篇作业--xray+fofa主动扫描