zoukankan      html  css  js  c++  java
  • 用小白鼠找毒药

     有1000个一模一样的瓶子,其中有999个装的是普通的水,有一瓶装的是无色无味的毒药;这瓶毒药在小白鼠喝完之后一周就会发作死亡;你有10只小白鼠和一周的时间。请问如何找到这瓶毒药?

    解答:10只老鼠,刚刚好2的10次方等于1024,是大于1000的。也就是说,可以用10只老鼠的生死(生死可以用1、0表示)来确定1000以内的任何一个数字。

    具体思路:把1000个瓶子可以按二进制数排序,是1的位就让对应的老鼠去喝,0则不喝。老鼠也可以排个号,从m1,m2到m10,假如编号为0010101100(172)这瓶水有毒,m3,m5,m7,m8老鼠喝了这瓶水,也就是说可以通过这四只老鼠死了,其余的老鼠没死,确定这瓶水有毒。

              m1 m2 m3 m4 m5 m6 m7 m8 m9 m10

    1         0   0     0    0    0    0    0    0    0     1

    2         0    0    0    0    0    0    0    0    1     0

    172     0    0    1    0    1    0    1    1    0     0  

    结论:n 只小白鼠 t 周的时间可以从 (t+1)的n 次方个瓶子中检验出毒药来。

  • 相关阅读:
    20180827 360笔试客观题
    20180821 hikvision笔试
    20180820 美团一面
    20180811 网易
    20180811 多益网络
    20180810 多益网络模拟笔试
    hbase --知识点总结
    flume知识点总结
    oracle --hint总结
    查看oracle的执行计划
  • 原文地址:https://www.cnblogs.com/hooo-1102/p/11813643.html
Copyright © 2011-2022 走看看