面试题
有 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 桶牛奶有毒了。

扩列下我尉(同英):CGMX9880 获取更多 程序员架构学习资料,
技术也是在不断更新,我相信你也想学到最新技术,
所以你们就不要说我骗人的,加的都获取资料,
学习更上一层楼了!Java,人工智能,架构师,初级程序员提升都有!

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

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

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

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

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

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

    原文链接:https://blog.csdn.net/dam454450872/article/details/104438382 题目 有 n 桶牛奶,其中有 1 桶有问题,老鼠喝了后第二天会死掉. ...

  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. 面试官角度看应聘:问题到底出在哪?(下)

    作者简介:堂主,2006 年开始沉迷前端领域.工作历经淘宝前端开发团队.蘑菇街前端团队,现为政采云前端团队(ZooTeam)负责人,好烟不好酒,半个茶人. 本篇是<面试官角度看应聘:问题到底出在 ...

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

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

  7. 分布式id生成策略,我和面试官扯了一个半小时

    面试官:小伙子,你还记得我吗?我是上次面试你的那个面试官. 我心想:我去,怎么会不记得,我又不是青年痴呆,上次害我画了那么多图,还使劲敲了一个多钟的电脑,满脑子都是你的阴影. 我:记得记得,您好,很高 ...

  8. 从面试官的角度分享一些后端校招经验

    1. 写在前面 我从去年年初开始在美团当校招面试官,参加了 17 届春招和 18 届秋招两届面试,总共就面试了五十多个人.本来我也就是刚开始学着当面试官,不该妄谈经验,但是因为最近换了一份工作,未来几 ...

  9. 岗位理解_当面试官问求职者对应聘岗位的理解情况

    虽然求职是看的是岗责是否匹配自己的经历和能力,但是很多面试官还是会问这样的问题.对于求职者来说,对岗位的理解其实就是把岗位职责背一遍,但是面试官既然问了,就要说出一些其他内容来.想回答好这个问题,就要 ...

最新文章

  1. apidoc文档项目构建
  2. TEEC_RegisterSharedMemory和TEEC_AllocateSharedMemory的区别
  3. Java 7和Java 8之间的细微自动关闭合同更改
  4. 【剑指offer - C++/Java】14、链表中倒数第k的节点
  5. mysql查询到最新记录就停止_使用Limit参数优化MySQL查询 在找到一个记录后将停止查询...
  6. 简单 Proxy 自动提款机应用
  7. 为ASP.NET控件加入快捷菜单
  8. php simplexmlelement array,php中SimpleXMLElement 对象转换为数组
  9. tensorflow 版本列表_最新|谷歌发布TensorFlow 1.3.0版本,都更新了哪些内容?
  10. C库函数学习笔记之strcpy
  11. bin文件用cad打开_bin文件如何打开 XP系统中的打开的技巧
  12. zedgraph显示最小刻度_关于ZedGraph几个难点
  13. 使用Fiona创建Shapefile矢量数据
  14. matlab画gds图,Matlab GDS流程.doc
  15. 静态背景下运动目标检测
  16. 0xbc指令 st75256_st75256 - 涂Sir的个人空间 - OSCHINA - 中文开源技术交流社区
  17. Code Review 在丁香医生前端团队的实践
  18. jQuery经典小案例
  19. 计算机应用技术未来趋势,浅谈计算机应用技术现状及发展趋势
  20. python 年会抽奖小程序

热门文章

  1. web网站整合微信扫码登录
  2. 关闭自动降频 linux,iPhone如何关闭降频?iPhone手动关闭降频方法[多图]
  3. 微信H5授权用户和公众号关注用户区别
  4. 六张思维导图,读懂项目管理
  5. ngx-datatable中文教程
  6. H2O机器学习:一种强大的可扩展的人工智能和深度学习技术
  7. flutter doctor --android-licenses命令之后出现JAVA_HOME错误
  8. 调用Windows api 窗口截图
  9. 基于PHP的酒店住宿管理系统 毕业设计源码261455
  10. TFT,TFD,STN 屏幕以及VGA,QVGA,SVGA分辨率等常识