面试官:如何用最少的老鼠试出有毒的牛奶?
面试题
有 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,人工智能,架构师,初级程序员提升都有!
后记
这种题考查了对二进制的应用,也有很多变种面试题,但万变不离其宗,掌握了方法方可以不变应万变
这是一位网友的微信支付一面中遇到的题,我看到后,一点思路都没有,但有的朋友直接就把方案说出来了,可见平时积累的重要性
面试官:如何用最少的老鼠试出有毒的牛奶?相关推荐
- 面试:如何用最少的老鼠试出有毒的牛奶?
面试题 有 n 桶牛奶,其中有 1 桶有问题,老鼠喝了后第二天会死掉.如何在最短时间内用最少的老鼠测出有问题的那瓶牛奶? 答案 如果 n 是 2 的整数次幂,就是 n 转换为二进制后的位数减一.如果 ...
- 如何用最少的老鼠试出有毒的牛奶?
原文链接:https://blog.csdn.net/dam454450872/article/details/104438382 题目 有 n 桶牛奶,其中有 1 桶有问题,老鼠喝了后第二天会死掉. ...
- 2021-08-27 思考:1000瓶药水,1瓶有毒,老鼠毒发24h,如何用最少的老鼠在24h内找出毒药?
题目: 现在有1000瓶药水,其中一瓶有毒,一只老鼠喝了在24h后会准时死亡,药水无色无味,如何用最少的老鼠在24h内找出毒药? 分析: 时间限制为24h,说明我们只有一次喂老鼠的机会,需要一波找出来 ...
- 2019-02-13 思考:1000瓶药水,1瓶有毒,老鼠毒发24h,如何用最少的老鼠在24h内找出毒药?
题目: 现在有1000瓶药水,其中一瓶有毒,一只老鼠喝了在24h后会准时死亡,药水无色无味,如何用最少的老鼠在24h内找出毒药? 分析: 时间限制为24h,说明我们只有一次喂老鼠的机会,需要一波找出来 ...
- 面试官角度看应聘:问题到底出在哪?(下)
作者简介:堂主,2006 年开始沉迷前端领域.工作历经淘宝前端开发团队.蘑菇街前端团队,现为政采云前端团队(ZooTeam)负责人,好烟不好酒,半个茶人. 本篇是<面试官角度看应聘:问题到底出在 ...
- 1000瓶有毒的水,用多少只老鼠可以试出有毒的那瓶
文章目录 信息论解法 二分法解法 二进制解法 信息论解法 信息论解法得不到过程,只能得到结论 老鼠只有两种结果,死或者不死,当这两种可能相等的时候,可以得到最大的信息量,log2 = 1比特.设法让每 ...
- 分布式id生成策略,我和面试官扯了一个半小时
面试官:小伙子,你还记得我吗?我是上次面试你的那个面试官. 我心想:我去,怎么会不记得,我又不是青年痴呆,上次害我画了那么多图,还使劲敲了一个多钟的电脑,满脑子都是你的阴影. 我:记得记得,您好,很高 ...
- 从面试官的角度分享一些后端校招经验
1. 写在前面 我从去年年初开始在美团当校招面试官,参加了 17 届春招和 18 届秋招两届面试,总共就面试了五十多个人.本来我也就是刚开始学着当面试官,不该妄谈经验,但是因为最近换了一份工作,未来几 ...
- 岗位理解_当面试官问求职者对应聘岗位的理解情况
虽然求职是看的是岗责是否匹配自己的经历和能力,但是很多面试官还是会问这样的问题.对于求职者来说,对岗位的理解其实就是把岗位职责背一遍,但是面试官既然问了,就要说出一些其他内容来.想回答好这个问题,就要 ...
最新文章
- apidoc文档项目构建
- TEEC_RegisterSharedMemory和TEEC_AllocateSharedMemory的区别
- Java 7和Java 8之间的细微自动关闭合同更改
- 【剑指offer - C++/Java】14、链表中倒数第k的节点
- mysql查询到最新记录就停止_使用Limit参数优化MySQL查询 在找到一个记录后将停止查询...
- 简单 Proxy 自动提款机应用
- 为ASP.NET控件加入快捷菜单
- php simplexmlelement array,php中SimpleXMLElement 对象转换为数组
- tensorflow 版本列表_最新|谷歌发布TensorFlow 1.3.0版本,都更新了哪些内容?
- C库函数学习笔记之strcpy
- bin文件用cad打开_bin文件如何打开 XP系统中的打开的技巧
- zedgraph显示最小刻度_关于ZedGraph几个难点
- 使用Fiona创建Shapefile矢量数据
- matlab画gds图,Matlab GDS流程.doc
- 静态背景下运动目标检测
- 0xbc指令 st75256_st75256 - 涂Sir的个人空间 - OSCHINA - 中文开源技术交流社区
- Code Review 在丁香医生前端团队的实践
- jQuery经典小案例
- 计算机应用技术未来趋势,浅谈计算机应用技术现状及发展趋势
- python 年会抽奖小程序
热门文章
- web网站整合微信扫码登录
- 关闭自动降频 linux,iPhone如何关闭降频?iPhone手动关闭降频方法[多图]
- 微信H5授权用户和公众号关注用户区别
- 六张思维导图,读懂项目管理
- ngx-datatable中文教程
- H2O机器学习:一种强大的可扩展的人工智能和深度学习技术
- flutter doctor --android-licenses命令之后出现JAVA_HOME错误
- 调用Windows api 窗口截图
- 基于PHP的酒店住宿管理系统 毕业设计源码261455
- TFT,TFD,STN 屏幕以及VGA,QVGA,SVGA分辨率等常识