先说结论:

假设仅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只老鼠/猪最多可以搜索多少瓶水相关推荐

  1. 面试智力题 - 找出12个球中质量不同的小球

    面试智力题 - 找出12个球中质量不同的小球 面试被问到了这么一道智力题. 现在有12个外观完全相同的12个小球,已知其中一个小球质量和其他的11个不同.用一个天平称3次,找出这个质量不同的小球,并说 ...

  2. 分享一些有趣的面试智力题

    原文作者:matrix67 原文地址:面试智力题(上)  面试智力题(下) 偶然间在网上看到几个原来没见过的面试智力题,有几个题目在国内流传相当广,什么n个人怎么分饼最公平,屋里的三个灯泡分别由哪个开 ...

  3. 程序员有趣的面试智力题(转)

    转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6726419         偶然间在网上看到几个原来没见过的面试智力题, ...

  4. 微软Google等互联网公司经典面试智力题和解答

    一.微软58题  A.逻辑推理  1.你让工人为你工作7天,给工人的回报是一根金条.金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你 的工人付费?  2.请 ...

  5. 经典面试智力题和解答

    一.微软58题 A.逻辑推理        1.你让工人为你工作7天,给工人的回报是一根金条.金条平分成相连的7段,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你 的工人付费? ...

  6. 收藏微软面试智力题 (附答案)

    A.逻辑推理 1.你让工人为你工作7天,给工人的回报是一根金条.金条平分成相连的7段 ,你必须在每天结束时给他们一段金条,如果只许你两次把金条弄断,你如何给你 的工人付费?   2.请把一盒蛋糕切成8 ...

  7. 微软面试智力题(附答案)

    转自: http://www.blogjava.net/wenhan-uk/archive/2007/08/17/137703.html 收藏微软面试智力题 (附答案) A.逻辑推理 1.你让工人为你 ...

  8. 联想面试智力题,听说前面三道题必考(有部份解答)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 联想面试 ...

  9. [大数据面试]--智力题(2)

    感谢原文作者:https://blog.csdn.net/wuzhekai1985/article/details/6702354 1.有两根不均匀分布的香,香烧完的时间是一个小时,你能用什么方法来确 ...

最新文章

  1. 机器学习PAL基本概念
  2. 潘云鹤:人工智能走向2.0 | 全球青少年图灵计划首场大师公开课
  3. java多线程系列1:Sychronized关键字
  4. python最全知识点_史上最全的Python面向对象知识点疏理
  5. python示例_Python中的缩进示例
  6. android beaglebone,Android Based Beaglebone Spybot
  7. 21 个 curl 命令练习 | Linux 中国
  8. python抓取疫情数据_python 爬取疫情数据
  9. 解决Jenkins上git出现的“ERROR: Error fetching remote repo ‘origin‘”问题
  10. idea运行报Command line is too long
  11. kotlin android中文文档,Android studio 生成带Kotlin文档的实现方式
  12. 登录授权验证之OAuth2.0
  13. 最全静态网页模板网站
  14. 多种方法对网页文字进行快速复制(仅供学习使用,勿践踏他人成果)
  15. 域控组策略桌面壁纸设置问题
  16. php公众号解决投票刷票,微信公众号投票活动如何防止刷票现象
  17. 数字通信系统中的频带利用率
  18. java ODBC连接MYSQL数据库
  19. Junit-对涉及数据库操作的服务进行单元测试
  20. mysql部分繁体字无法保存

热门文章

  1. 使用调试钩子屏蔽全局钩子
  2. 爬虫实战-肯德基kfc门店地址实战
  3. 怎么给WordPress网站添加固定的百度分享按钮?
  4. 好用的Java工具类
  5. 电脑上如何卸载html5,电脑安装影子系统后卸载不了怎么办
  6. KD树(K-Dimension Tree)
  7. 票据撮合区块链系统开发-去中心化的新型票据交易展现形式的系统
  8. 如何写一个简单的病毒程序
  9. JPEG图像的解压缩操作
  10. php 字体如何加粗和调大小,如何在PHP中使文本变为粗体?