小白鼠算法

原创 2012年03月27日 20:24:18

有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?

【1】O(N)

      如果没有时间要求,则只需要一个小白鼠,顺次喝瓶子,什么时候死亡,则是该瓶子。

【2】O(log2(N))

      如果没有时间要求,则二分这1000个瓶子,这样,是log2(1000)=10,且需要10只老鼠。

【3】O(log10(N))

      如果没有时间要求,充分利用这10只老鼠,分成((100)(100)(100)(100)(100)(100)(100)(100)(100)(100))然后每个老鼠吃一个混合的100瓶,然后死掉一个老鼠,说明在这100个中,现在剩余9个老鼠,然后将100分为12*9,在其中某个12中,然后剩8只小白鼠了,分成2*8,这样在其中某个2中,然后分成1*7,则找到了,共log10(1000)=4次。

【4】O(log(1))

根据2^10=1024,所以10个老鼠可以确定1000个瓶子具体哪个瓶子有毒。具体实现跟3个老鼠确定8个瓶子原理一样。

000=0
001=1
010=2
011=3
100=4
101=5
110=6
111=7
一位表示一个老鼠,0-7表示8个瓶子。也就是分别将1、3、5、7号瓶子的药混起来给老鼠1吃,2、3、6、7号瓶子的药混起来给老鼠2吃,4、5、6、7号瓶子的药混起来给老鼠3吃,哪个老鼠死了,相应的位标为1。如老鼠1死了、老鼠2没死、老鼠3死了,那么就是101=5号瓶子有毒。
同样道理10个老鼠可以确定1000个瓶子


题目1110:小白鼠排队

 一.题目描述: N只小白鼠(1 输入: 多案例输入,每个案例的输入第一行为一个整数N,表示小白鼠的数目。 下面有N行,每行是一只白鼠的信息。第一个为不大于100的正整数,表示白鼠...
  • lhyer
  • lhyer
  • 2015年08月25日 19:19
  • 614

小白鼠与毒药解题过程分析

小白鼠与毒药问题详细分析过程,原题如下: 我们有很多瓶无色的液体,其中有一瓶是毒药,其它都是蒸馏水,实验的小白鼠喝了以后会在5分钟后死亡,而喝到蒸馏水的小白鼠则一切正常。现在有5只小白鼠,请问一下,我...
  • river_like
  • river_like
  • 2014年03月18日 01:50
  • 7990

【数学】用信息论去解决「小白鼠试毒」问题

试毒问题非常经典,最早是在本科时候人人上看到的,是最基础的1000个试剂,有一个是有毒的,一点就会死去,而且一个小白鼠只能试一次,问最少几个小白鼠能够找出哪瓶是有毒的。后来陆陆续续又看到了一些关于这方...
  • haolexiao
  • haolexiao
  • 2017年06月02日 12:49
  • 835

小白鼠喝毒水的问题。

有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出哪瓶水有毒? 这是一道很经典的面试题目,先说解题方法吧,2^n >= 1000,其...
  • mengtnt
  • mengtnt
  • 2013年01月07日 17:50
  • 11524

面试-白鼠试毒

小白鼠试毒药问题描述如下:     现有1000个小瓶和10只小白鼠,这1000个小瓶中有一瓶有毒药,其他都是水。只要小白鼠喝了毒药,过一段时间就会死掉。现在问如何利用这10只小白鼠一次性检查出...
  • IT_small_farmer
  • IT_small_farmer
  • 2014年08月07日 10:08
  • 1380

剑指Offer之淘宝面试题之小白鼠与毒药解题过程分析

网上流传着一题淘宝面试题,原题如下: 我们有很多瓶无色的液体,其中有一瓶是毒药,其它都是蒸馏水,实验的小白鼠喝了以后会在5分钟后死亡,而喝到蒸馏水的小白鼠则一切正常。现在有5只小白鼠,请问一下,...
  • SunnyYoona
  • SunnyYoona
  • 2014年03月18日 09:20
  • 1578

小白鼠吃药验证

用小白鼠鉴别有毒药水问题 题设:有N瓶水,其中有一瓶水有剧毒,如果小白鼠喝了会在24小时的时候死亡。 问:用多少只小白鼠能够检测出哪瓶水有剧毒? 要求:用的小白鼠数量少并且用时要短,并给...
  • u013027233
  • u013027233
  • 2014年06月25日 18:40
  • 479

华为OJ--称重小白鼠

/*根据重量排序后,输出帽子颜色 * 举例: 5只小白鼠,重量分别为15 30 5 9 30,帽子颜色依次为CL_RED, CL_BLUE, CL_BLUE, CL_YELLOW, CL_GRAY, ...
  • qq_19697763
  • qq_19697763
  • 2016年03月21日 14:30
  • 258

有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒?

1、有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒。   我来解释一下,并给出一个方案,时间不是问题,24小...
  • fengyueqq
  • fengyueqq
  • 2014年03月12日 16:36
  • 3665

小白鼠试毒酒的升级版

有9瓶酒,其中一瓶有毒,可以使用小白鼠进行试验,但是毒发需要8小时,问最少需要几只小白鼠才可以在16小时内知道哪瓶酒是毒酒。...
  • hekailing
  • hekailing
  • 2015年09月25日 10:52
  • 780
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:小白鼠算法
举报原因:
原因补充:

(最多只允许输入30个字)