zoukankan      html  css  js  c++  java
  • 小白鼠以身试毒

    已知有8瓶水,其中1瓶有毒, 拿小白鼠做试验,药效发挥需要2小时时间,才能让白鼠死.现在给你2小时时间,
    问:最少,需要几只老鼠?

    度娘之,在CSDN上找到一个解答,冒昧引用,此是答案链接

    内容同以下。

    有1000瓶水,其中一瓶有毒,小白鼠喝后24小时内死亡.问最少用多少只小白鼠可以在24小时内找出哪瓶水有毒呢.
    分析:此问题的模型就是用多少二进制位可以表示1000内的一个数字.回答这个模型就简单了,1000表示为二进制表示1111101000.最大的1000用10位就中了,那么检验这1000瓶水要10只小白鼠.
    那么要怎么样检验呢?1000瓶水太多了,我们用8瓶水说明情况(此时需要3只小白鼠).好像下面的图叫做平衡二叉树。如下:


    所有小白鼠只喝右分支的水(要是左的话水编号要从右到左增加). 也就是  //为何?
    鼠1喝水4,5,6,7的混合液体
    鼠2喝水2,3,6,7的混合液体
    鼠3喝水 1,3,5,7的混合液体 
    貌似水0没有老鼠喝,若一只白鼠都没有死则说明水0有毒了.
    这样小白鼠死亡表示1,不死亡表示0。鼠1,鼠2,鼠3组成个三位二进制,

     
    000对应水0有毒
    001对应水1有毒

    111对应水7有毒


    1000瓶水和这个原理一样用十个小白鼠就找到哪瓶水有毒了.。

  • 相关阅读:
    Java EE 经验
    Java界面设计 Swing(1)
    Java开源库
    Java Abstract Class & Interface
    Selenium WebDriver Code
    Json在PHP与JS之间传输
    Live YUV420 和 OpenCV Mat 的互相转换
    Visual C++ 升级到 Visual Studio
    Sentiment Analysis resources
    C# XMLDocument
  • 原文地址:https://www.cnblogs.com/w-five/p/3563930.html
Copyright © 2011-2022 走看看