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自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

     

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

  • 相关阅读:
    HDU 3339 In Action 最短路+01背包
    hash与map的区别联系应用(转)
    POJ
    欧几里德与扩展欧几里德算法(转)
    POJ
    第三届蓝桥杯C++B组省赛
    第四届蓝桥杯C++B组省赛
    第五届蓝桥杯C++B组省赛
    第六届蓝桥杯C++B组省赛
    线段树为什么要开4倍空间
  • 原文地址:https://www.cnblogs.com/Wu13241454771/p/14794126.html
Copyright © 2011-2022 走看看