小白鼠算法

原创 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个瓶子


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

小白鼠问题C语言代码

  • 2013-08-28 14:14
  • 296KB
  • 下载

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

关于1000瓶水中有一瓶是毒药问题的思路与用Java代码具体实现方案 1,原题     有1000个一模一样的瓶子,其中有999瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在...

[转载]小白鼠喝药水找毒药——面试题

本文转自 原博客地址 题目:1000 瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验。喝了无毒的药水第二天没事儿,喝了有毒的药水后第二天会死亡。如何在一天之内(第二天)找出这瓶有毒的药水?...

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

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

小白鼠试毒酒的升级版

有9瓶酒,其中一瓶有毒,可以使用小白鼠进行试验,但是毒发需要8小时,问最少需要几只小白鼠才可以在16小时内知道哪瓶酒是毒酒。

小白鼠问题

小白鼠问题 问题描述:有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。问,在一星期时间内,如何用最少的白鼠试验出有毒的那瓶?

问题 G: 小白鼠排队

题目描述 N只小白鼠(1 输入 多案例输入,每个案例的输入第一行为一个整数N,表示小白鼠的数目。 下面有N行,每行是一只白鼠的信息。第一个为不大于100的正整...

1020 小白鼠:哈夫曼树

1020 小白鼠 小白鼠 时间限制: 1秒  内存限制: 64M Description 有 n 个瓶子,已知其中有且仅有一个瓶子的饮料有毒。现在我们想知道哪个瓶子的饮料有毒,...

小白鼠测试--------------VR头戴设备-暴风魔镜4

公司年终抽奖同事抽到了VR头戴设备-暴风墨镜4,关注VR技术一年多了,很期望有一款成熟的价格亲民的产品,趁此机会舔着脸借同事的先过把瘾,但同事要求我玩过后写一个测试报告,本人屌丝,舍不得花钱自己买,就...

微博里很热的1000瓶子10小白鼠找毒药问题

有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药? 原帖...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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