博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小白鼠与毒药
阅读量:6237 次
发布时间:2019-06-22

本文共 591 字,大约阅读时间需要 1 分钟。

1. 简述

    我们有很多瓶无色的液体,其中有一瓶是毒药,其它都是蒸馏水,实验的小白鼠喝了以后会在5分钟后死亡,而喝到蒸馏水的小白鼠则一切正常。现在有5只小白鼠,请问一下,我们用这五只小白鼠,5分钟的时间,能够检测多少瓶液体的成分?

2. 思路

    这个题目的难点在于小白鼠喝了毒药需要5分钟才会死亡,而就给你5分钟的时间,这要求五只小老鼠要同时使用。

    对于时间不限,较好理解。假设当前有K瓶毒药,怎么较快找到那瓶呢?可以将K瓶毒药一分为二,K/2瓶出来,混合在一起给第一个小老鼠喝,如果死了,那么说明这K/2瓶中有一瓶是毒药,否则在毒药在另外的K/2瓶中,同理,相当于一只小老鼠可以减半毒药的范围。这样刚好可以最多检查32瓶。即第一只过后,剩余16个,第二只过后,剩余8个,第三只过后,剩余4个,第四只过后,剩余2个,第五只过后剩余1个,即为所求。

    对于时间受限,这里是必须同时使用五只小老鼠,思路如下。5个小老鼠测试任意一个五位的二进制编号的瓶子,即把0-31这32个瓶子,映射到五个位上,1****,*1***,**1**,***1*,****1,这五个每个对应16个瓶子的成分混合,将这五分药水分别给五个小老鼠喝下去,就能知道得到的数字是多少了,比如,第一个和第二个小老鼠死了,别的小老鼠都没死,那么说明,毒药瓶子的编号为11000,即24号(从0号开始,是第25个)。

3. 参考

   

转载地址:http://zvzia.baihongyu.com/

你可能感兴趣的文章
linux下使用awk命令按时间段筛选日志
查看>>
【译】深入解析Node.js中5种发起HTTP请求的方法
查看>>
GitChat · DevOps | 如何结合 Scrum 和 Kanban
查看>>
vue2.0与支付个人总结
查看>>
UDP与TCP
查看>>
Webpack 爱与恨
查看>>
1、Object 2、String 3、StringBuilder
查看>>
如何发布自己的开源框架到CocoaPods
查看>>
对 echo 框架进行统一的自定义错误处理
查看>>
自己开发图表库,脱离echart
查看>>
Java日期处理工具类(基于Calendar)
查看>>
夏日葵电商:阅读付费、知识付费系统诞生的“知识明星”
查看>>
调查了300多位技术主管:AWS和Azure经常配对使用
查看>>
约瑟夫环问题
查看>>
CNN之父再出豪言:深度学习需要新的编程语言
查看>>
Studio 3T:MongoDB SQL探究
查看>>
在敏捷中应用测试驱动开发
查看>>
在Kotlin中使用Gradle构建缓存
查看>>
PHP扩展库PEAR被攻击,近半年下载者或被影响
查看>>
Kubernetes上领先的开源Serverless解决方案有哪些
查看>>