zoukankan      html  css  js  c++  java
  • 老鼠和毒药的问题

    今天分享一道很有意思的问题。
     
    题目:
      有1000只一模一样的瓶子,编号1-1000。其中999瓶是水,一瓶是看起来像水的毒药。只要老鼠喝下一小口毒药,一天后则死亡。现在,你有7只老鼠和一天的时间,如何检验出哪个号码瓶子里是毒药?

    答案:
    根据2^10=1024,所以10个老鼠可以确定1000个瓶子具体哪个瓶子有毒。

    先将数据规模变小,有8只一模一样的瓶子,其中有一只瓶子是毒药。现在最少需要几只老鼠可以检验出第几瓶才是毒药?

    具体实现跟3个老鼠确定8个瓶子原理一样。
              
    0 0 0 = 0
    0 0 1 = 1
    0 1 0 = 2
    0 1 1 = 3
    1 0 0 = 4
    1 0 1 = 5
    1 1 0 = 6
    1 1 1 = 7

     
    分析:
    我们只用3只老鼠,老鼠A、B、C。

    上图表中列代表的是瓶子的数量,行代表老鼠。

    看每一行的时候,编号为1表示该行对应的老鼠喝了。
    举例,比如编号为3的瓶子,0 1 1,表示老鼠B和老鼠C都喝了;编号为7的表示,老鼠A、B、C都喝了。

    讨论:
      1、比如结果是老鼠B、C死了,我们就可以得出011=3,即第3瓶药为毒药
      2、比如结果是老鼠A、B、C都死了,我们就可以得出111=7,即第7瓶药为毒药
      3、再比如,只有老鼠B死了,我们就可以得出010=2,即第2瓶药为毒药
      4、再比如,没有老鼠死,我们就可以得出000=0,即第0瓶药为毒药

     
    结束:
    通过8瓶的例子,我们直到只需要3只老鼠【 2^3=8 】即可判断出哪一瓶是毒药,那么1000瓶我们只需要10只老鼠即可判断,因为原理是一样的;

    比如10只老鼠通过二进制的方式为1的时候喝了,最后是第5只和第6只老鼠死了,我们可以很快的定位到是第 0000110000 = 2^5+ 2^4 = 48为毒药;今天的这个题很有意思吧!

    欢迎关注【无量测试之道】公众号,回复【领取资源】
    Python编程学习资源干货、
    Python+Appium框架APP的UI自动化、
    Python+Selenium框架Web的UI自动化、
    Python+Unittest框架API自动化、

    资源和代码 免费送啦~
    文章下方有公众号二维码,可直接微信扫一扫关注即可。

    备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

     

     添加关注,让我们一起共同成长!

  • 相关阅读:
    libcurl进行HTTP GET获取JSON数据(转载)
    c/c++ 动态申请数组(转载)
    利用注册表写开机启动程序(转载)
    VC++使用IMAPI调用Outlook邮箱客户端和Foxmail邮箱客户端遇到的问题
    解决Duilib集成CEF浏览器在Win10无法向客户区拖拽文件
    解决往监控目录拖拽文件夹无法监控到的问题
    VC++ 实现修改文件创建、访问、修改时间属性(转载)
    Windows中的时间(SYSTEMTIME和FILETIME) (转载)
    ThinkPHP真正疑难问题笔记
    git版本控制管理实践-4
  • 原文地址:https://www.cnblogs.com/Wu13241454771/p/14794126.html
Copyright © 2011-2022 走看看