面试题如下:有1000瓶药水,只有一瓶是有毒的,小白鼠喝了就会身亡,但是需要一天的时间才会有结果,而且你只有一天时间去判断,问题是,如何使用最少的小白鼠,试验出哪瓶是毒药?

答: 转换成二进制,最少需要10只 ,2^10=1024,为什么这么取呢,我们将1000瓶药水变成二进制,我们需要得知多少位二进制可以表示1000瓶药水,下方是我们求的步骤:

1.第一步,将1000瓶药水编上编号1.2.3....1000,取十只小白鼠也编上编号1.2.3...10。

2.将十只小白鼠按照二进制的位数排列,将1000瓶药水编号转成二进制,如果位数是1,就给当前位数的小白鼠喝下去。

3.将1000瓶药水依次喂给小白鼠喝下去。

4.一天后,将死亡的小白鼠的二进制数转成十进制,该编号的药水就是毒药。

例如:

1.编号为66的药水,转换成二进制就是 00 0100 0010 ,此时喂给编号2与7的小白鼠喝下去。以此类推。。。

2.判断结果时,比如小白鼠死亡的编号是 00 0101 1100,转换成十进制就是92号,那么92号药水就是毒药。

注意Tips:

这个算法从面试到现在看了很多遍,过了一阵就会弄混,今天彻底捋请了一下:

1.如何将1000瓶给小白鼠喂下去(博主脑残,所以超过10的数就摆楞不过来了,还请见谅(#`O′),再次遇到了瓶颈hiahiahia。。。):

首先第一步是将1000瓶与十位二进制扯上关系,即转换成二进制,变成了0/1数列,然后按照“1”就喝,“0”就不喝,给他们喂下去(记得等分一下,不等分也没关系,只是为了让它们死的公平一点hiahiahia),不停的喂完1000瓶(你累了可以歇一下)

2.因为只有一瓶毒药,所以答案显而易见,可以假设前999瓶都是没毒的,十只小白鼠喝下去999瓶全都安然无恙(此时不包括它们撑死的可能(#`O′)),当最后一瓶喝下去之后,喝毒药死亡的某几只小白鼠就死的明明白白的,十位二进制哪位是“1”也明明白白的,转成十进制,毒药就显而易见啦。

学习的时候参考的这位大佬,写的很详细,为了使自己记得更清楚一点,用自己的语言重写一遍,看不懂我写的可以看一下该博主。

嘻嘻嘻,再次膜拜大佬!(以及十只小白鼠的友情出演~)

https://blog.csdn.net/qq_22764659/article/details/81505051

1000瓶药水,只有一瓶是有毒的,如何使用最少的小白鼠测出那瓶是毒药?相关推荐

  1. 有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多...

    最容易想到的就是用1000只小白鼠,每只喝一瓶.但显然这不是最好答案. 既然每只小白鼠喝一瓶不是最好答案,那就应该每只小白鼠喝多瓶.那每只应该喝多少瓶呢? 首先让我们换种问法,如果有x只小白鼠,那么2 ...

  2. (小白鼠喝药问题)1000瓶药水,其中有一瓶是有毒的,如何找出有毒的药水?

    问题描述 有 1000 瓶药水,但是其中有一瓶是有毒的,小白鼠只要喝了任意剂量的药水,24小时内就会死掉!请问,要在24小时内找出有毒的药水,最少需要多少只小白鼠? 解答 至少需要10只. 分析 1. ...

  3. 1000瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验。喝了无毒的药水第二天没事儿,喝了有毒的药水后第二天会死亡。如何在一天之内(第二天)找出这瓶有毒的药水?

    题目:1000 瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验.喝了无毒的药水第二天没事儿,喝了有毒的药水后第二天会死亡.如何在一天之内(第二天)找出这瓶有毒的药水? 第一次看这个问题完全 ...

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

    题目:1000 瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验.喝了无毒的药水第二天没事儿,喝了有毒的药水后第二天会死亡.如何在一天之内(第二天)找出这瓶有毒的药水? 第一次看这个问题完全 ...

  5. 10只老鼠与1000瓶药水

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

  6. 【智力题】有 1000 瓶药物,但是其中有一瓶是有毒的,小白鼠吃了一个星期以后就会死掉!请问,在一个星期内找出有毒的 药物,最少需要多少只小白鼠?

    答案是10只 本题采用了二进制的思想 小白鼠的生与死可以看作二进制的0和1. 用10只小白鼠,也就是10个二进制位,最多可以表示1024个数. 编号环节 先给药水从001到1000编号,每个药水编号转 ...

  7. 1000瓶水,1瓶有毒药,几只小白鼠能够找出

    1000瓶水,1瓶有毒药,几只小白鼠能够找出 有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒? 这道题考察的是对2进制的 ...

  8. 10只小白鼠1000支药水找出毒药问题

    偶然间看到了这道题:10只小白鼠,1000支药水有且仅有一支是毒药,毒药发作时间是两个小时,忽略小白鼠喝药水的时间以及其他影响因素,每支药水足够多,问:如何利用这10只小白鼠在两个小时内找到那支毒药? ...

  9. 2021-08-27 思考:1000瓶药水,1瓶有毒,老鼠毒发24h,如何用最少的老鼠在24h内找出毒药?

    题目: 现在有1000瓶药水,其中一瓶有毒,一只老鼠喝了在24h后会准时死亡,药水无色无味,如何用最少的老鼠在24h内找出毒药? 分析: 时间限制为24h,说明我们只有一次喂老鼠的机会,需要一波找出来 ...

最新文章

  1. windows server系统,登录系统提示按下 ctrl+alt+delete
  2. 《Linux系统初讲》学习总结(一)
  3. 《超越平凡的平面设计: 版式设计原理与应用》—色轮
  4. Hadoop 停止hdfs和yarn的命令
  5. 【OpenCV学习】Cuda-OpenCV-Image-Filter
  6. Spring AbstractBeanFactory
  7. 图灵奖大佬 Lecun 发表对比学习新作,比 SimCLR 更好用!
  8. springboot-21-maven多环境打包
  9. synchronized实现
  10. 大数据搭建各个子项目时配置文件技巧(适合CentOS和Ubuntu系统)(博主推荐)...
  11. 12.MongoDB之固定集合(Capped Collections)
  12. Three.js视频教程
  13. 量子计算机未来猜想,太厉害了吧?这台量子计算机能预测16种不同的未来!
  14. 12个从小到超级成功的博客案例研究
  15. 小仲马《茶花女》读后感
  16. 关于javaweb中的流媒体
  17. matlab simulink入门:搭建一个简单的电路
  18. 创建anaconda虚拟环境步骤
  19. 未能配置数据源:未指定“url”属性,无法配置嵌入的数据源。
  20. “以卡养卡”是个技术活,一般人玩不了,不一般的人玩的溜

热门文章

  1. 华擎主板bios设置图解_主板BIOS界面解析_华擎 Z170 极限玩家 7+_主板-中关村在线...
  2. python中面向对象的思想汇报_python试卷
  3. GICv3软件overview手册之发送和接受SGI
  4. 云计算平台包含哪些?是如何划分的?
  5. AI遮天传 DL-反馈神经网络RNN
  6. RGB与HSV是什么,为什么要进行转换
  7. C++简单程序编写和操作步骤
  8. linux系统下的程序开发报告册,linux系统及其应用(应用开发)实验报告册.doc
  9. Typo3及Nette漏洞合集
  10. 中南林注册教育邮箱加获取JetBrains个人许可证,续订许可证