计算机求职面试智力题:找毒药(一共n瓶水,仅有一瓶是毒药),求至少需要多少只老鼠/猪;或者求x只老鼠/猪最多可以搜索多少瓶水
先说结论:
假设仅1瓶存在毒药的情况下,x只老鼠/猪只经过一次测试最多可以从2^x瓶里找出来;
其加强版本,假设仅1瓶存在毒药的情况下,若一只老鼠/猪喝下后会在m分钟后死去,限时要在p分钟内寻找出来,那么x只老鼠/猪最多可以在(p/m + 1)^x瓶里找出来;
结论:求x:取对数;求n,算指数
先考虑最简单的情况,假设2只老鼠/猪,只经过一次测试,则最多可以在4瓶中找到毒药,具体方法是:A喝1、3号,B喝2、3号,若A死B死,毒药是3号;若A死B活,毒药是1号;若A活B死,毒药是2号;若A活B活,毒药是4号
假设3只老鼠/猪,只经过一次测试,则最多可以在8瓶中找到毒药,具体方法是:A测1 3 5 7号,B测2 3 6 7号,C测4 5 6 7号。共2^3=8种所有情况列举如下:
A死B死C死→7号有毒;A死B死C活→3号有毒;A死B活C死→5号有毒;A死B活C活→1号有毒;A活B死C死→6号有毒;A活B死C活→2号有毒;A活B活C死→4号有毒;A活B活C活→8号有毒
考虑加强版本,假设2只老鼠/猪,喝下后15分钟死亡,限时为30分钟,即可以进行两轮的测试,则最多可以在9瓶中找到毒药,具体方法是:A测1、4、7号,B测3、4、5号;①若A死B死则毒药确定是4号;②若A死B活则毒药是1或7;③若A活B死则毒药是3或5;④若A活B活则毒药可能是2、6、8、9。
情况②和③其实是等价的,就是剩下1只,毒药被限定在2个可能的号码里,第二轮测试只需要随意选择一瓶喝下即可得知。
情况④则是剩余2只,可能的号码4个,类似的回到最初的只测一次的问题,已经证明过可以在一次测试里找到,第二轮测试如法炮制即可
关于如何选择测试的号码,涉及到海明码,参考链接:海明码一篇文章彻底搞懂 - 秃桔子 - 博客园
补充:第一种情况就是用二进制来做,加强版本情况是(p/m+1)进制来做
计算机求职面试智力题:找毒药(一共n瓶水,仅有一瓶是毒药),求至少需要多少只老鼠/猪;或者求x只老鼠/猪最多可以搜索多少瓶水相关推荐
- 面试智力题 - 找出12个球中质量不同的小球
面试智力题 - 找出12个球中质量不同的小球 面试被问到了这么一道智力题. 现在有12个外观完全相同的12个小球,已知其中一个小球质量和其他的11个不同.用一个天平称3次,找出这个质量不同的小球,并说 ...
- 分享一些有趣的面试智力题
原文作者:matrix67 原文地址:面试智力题(上) 面试智力题(下) 偶然间在网上看到几个原来没见过的面试智力题,有几个题目在国内流传相当广,什么n个人怎么分饼最公平,屋里的三个灯泡分别由哪个开 ...
- 程序员有趣的面试智力题(转)
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6726419 偶然间在网上看到几个原来没见过的面试智力题, ...
- 微软Google等互联网公司经典面试智力题和解答
一.微软58题 A.逻辑推理 1.你让工人为你工作7天,给工人的回报是一根金条.金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你 的工人付费? 2.请 ...
- 经典面试智力题和解答
一.微软58题 A.逻辑推理 1.你让工人为你工作7天,给工人的回报是一根金条.金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你 的工人付费? ...
- 收藏微软面试智力题 (附答案)
A.逻辑推理 1.你让工人为你工作7天,给工人的回报是一根金条.金条平分成相连的7段 ,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你 的工人付费? 2.请把一盒蛋糕切成8 ...
- 微软面试智力题(附答案)
转自: http://www.blogjava.net/wenhan-uk/archive/2007/08/17/137703.html 收藏微软面试智力题 (附答案) A.逻辑推理 1.你让工人为你 ...
- 联想面试智力题,听说前面三道题必考(有部份解答)
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 联想面试 ...
- [大数据面试]--智力题(2)
感谢原文作者:https://blog.csdn.net/wuzhekai1985/article/details/6702354 1.有两根不均匀分布的香,香烧完的时间是一个小时,你能用什么方法来确 ...
最新文章
- 机器学习PAL基本概念
- 潘云鹤:人工智能走向2.0 | 全球青少年图灵计划首场大师公开课
- java多线程系列1:Sychronized关键字
- python最全知识点_史上最全的Python面向对象知识点疏理
- python示例_Python中的缩进示例
- android beaglebone,Android Based Beaglebone Spybot
- 21 个 curl 命令练习 | Linux 中国
- python抓取疫情数据_python 爬取疫情数据
- 解决Jenkins上git出现的“ERROR: Error fetching remote repo ‘origin‘”问题
- idea运行报Command line is too long
- kotlin android中文文档,Android studio 生成带Kotlin文档的实现方式
- 登录授权验证之OAuth2.0
- 最全静态网页模板网站
- 多种方法对网页文字进行快速复制(仅供学习使用,勿践踏他人成果)
- 域控组策略桌面壁纸设置问题
- php公众号解决投票刷票,微信公众号投票活动如何防止刷票现象
- 数字通信系统中的频带利用率
- java ODBC连接MYSQL数据库
- Junit-对涉及数据库操作的服务进行单元测试
- mysql部分繁体字无法保存