有1000瓶水,其中有一瓶有剧毒(假设哪怕一个毒药分子在里面也能致命),现在给你10只小强在24小时内通过小强试药的方式鉴定出来哪瓶药有毒。
情况1:假设小强服药后2小时内即可判断是否中毒,鉴别方案有哪些?
情况2:假设小强服药之后20小时才能判断是否中毒,鉴别方案又是什么?

凌晨发了个帖子,没想到十大了。。。强人很多,第一页就出现这么多正确答案。看来很多人都对二进制很敏感呀!这个应该可以归为算法或者算法相关的题目, 《编程珠玑》里面有类似的案例讲解,一个好的策略(算法)能得到很好的时间复杂度和空间复杂度。

看到不少人说这题目出的太残忍了,我自己也属狗的,改蟑螂来做实验品好了:)

我一个本科同学上午十点的作答,除了8小时就可以得到正确答案的那个方案我还在验证,其他的两种可以算作陈述比较详细的正确答案:)

情况1:假设狗服药后2小时内即可判断是否中毒,鉴别方案有哪些?
      方法一:因为2的10次方1024>1000,可以做10次分半测试。每次测原来一半数目的药瓶,确定在哪一半里面,再重复。
      给1000个药瓶编号,最开始用1号狗闻1号到500号药瓶,两小时后1号狗死则可确定有毒药瓶在1-500号中,否则在501-1000号 中;确定后用第二条狗闻确定毒药存在其中的的500个瓶子的前250个瓶子,两小时后可确定在哪250个瓶子中有毒药瓶;类似依次 125,63,32,16,8,4,2,1。最坏的情况死掉10条狗,10*2小时内找到毒药瓶。
      方法二:1000除以10=100,每条狗喝不同的100种混合在一起的药,可知毒药在哪100种里,100再除以9=11+1=12,每条 狗喝12种混合在一起的,可知在哪12种里,接下来就不用说了,8小时内就可以知道了。
     方法三:见情况二。

情况2:假设狗服药之后20小时才能判断是否中毒,鉴别方案又是什么?
                还是因为2的10次方1024>1000,用10条狗闻(1)或者不闻(0),最后死(1)或者不死(0)可组合 1024个不同状态,各代表一个瓶号,可一次性将毒药瓶找出。
        假设有3条狗要找出8瓶药中的一瓶毒药(2的3次方=8)。3条狗分别代表3个二进制数位。
        瓶号        二进制        狗的状态
        瓶0        000        3条狗都不闻
        瓶1        001        3号狗闻
        瓶2        010        2号狗闻
        瓶3        011        2号,3号狗闻
        瓶4        100        1号狗闻
        瓶5        101        1号,3号狗闻
        瓶6        110        1号,2号狗闻
        瓶7        111        1,2,3号狗闻

20小时后,3条狗的死和活就是上面8种状态组合。假设20小时后只有2号,3号狗死了,说明瓶3有毒; 假设20小时后,1号,2 号,3号狗都死了,说明瓶7有毒。
        把这个例子推广到10条狗1000瓶药即可,只是10条狗代表10个二进制数位。
        其实情况1也可以这么解决,麻烦一点。
                而且如果情况2是准时在20小时会中毒死亡的话,一条狗可以在不同时间吃药(20小时到24小时还有4个小时),那根据 死亡时间不同来确定是第几瓶也是一种方法,不过那太容易了。
                 可怜的Puppy

10只狗怎么来判断1000瓶药水中哪个有毒相关推荐

  1. 十只老鼠在1000瓶药水中找一瓶有毒的

    /*** 十只老鼠试验一千瓶药水,只有一瓶有毒,怎么找出有毒的那瓶?** 1000,转为二进制为11 1110 1000,共十位,每只老鼠各对应一位,* 比如3的二进制为0011,第1.2上为1,就让 ...

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

    1000瓶药水,1瓶有毒药,服用后一小时毒发,毒药可以无限稀释,那么一小时内用几只小白鼠能够找出毒药? 假如是8瓶药水,3只小白鼠. 000=0 001=1 010=2 011=3 100=4 101 ...

  3. “1000瓶药水,其中至多有1瓶剧毒,小狗服完药20小时后才能判断是否中毒。现在给你10只小狗、在24小时内、通过小狗试药的方式找出哪瓶药有毒或者全部无毒”

    题目: 1000瓶药水,其中至多有1瓶剧毒,小狗服完药20小时后才能判断是否中毒. 现在给你10只小狗.在24小时内.通过小狗试药的方式找出哪瓶药有毒或者全部无毒 思路: 一."小狗服完药2 ...

  4. 10只老鼠与1000瓶药水

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

  5. 【思维与逻辑】有1000瓶药水,但其中有一瓶毒药水,需要多少只小白鼠?

    [思维与逻辑]有1000瓶药水,但其中有一瓶毒药水,需要多少只小白鼠?   [思维与逻辑]有1000瓶药水,但其中有一瓶毒药水,需要多少只小白鼠?   [思维与逻辑]快速分沙堆,辨别出十堆沙子中哪堆沙 ...

  6. 1000瓶药水,其中至多有1瓶剧毒

    1000瓶药水,其中至多有1瓶剧毒 现在给你10只小狗在24小时内通过小狗试药的方式找出哪瓶药有毒或者全部无毒 (小狗服完药20小时后才能判断是否中毒) 10只小狗每只都有死和不死两种情况,所以死亡情 ...

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

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

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

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

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

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

  10. 2019-02-13 思考:1000瓶药水,1瓶有毒,老鼠毒发24h,如何用最少的老鼠在24h内找出毒药?

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

最新文章

  1. 华硕路由器安装aria2_网易UU加速器联动华硕,瞄准主机玩家联网刚需
  2. java排序——桶排序
  3. linux日志显示too many open files解决
  4. 【原】P2P应用的探究
  5. HTML5video 标签
  6. 解决tableViewCell分割线不到左边界的问题
  7. /proc 虚拟文件系统(实例)
  8. 【牛客 - 330I】Applese 的回文串(结论题,类似编辑距离,dp)
  9. 【opencv学习】图像特征检测
  10. adb命令安装apk到手机_安装在手机上自动化测试apk-傻猴
  11. shell基础命令管理
  12. 20210217:力扣第228周周赛(上)
  13. Oracle----MLDN
  14. python-css偏移反爬(一)
  15. 计算机键盘正确指法,键盘指法,详细教您盲打及快速打字指法练习的步骤
  16. pyspark之统计基础操作(三)
  17. 苹果全球开发者大会推出智能音箱网友吐槽Siri“掉链子”
  18. AG7110|AG7111|HDMI视频切换器方法全解
  19. 一切测试的基础——测试用例设计
  20. 数据库-Mysql-Ⅰ

热门文章

  1. 孔乙己:new的五种写法
  2. 三阶魔方还原步骤图_七步玩转三阶魔方还原公式及步骤图解教程
  3. Unity---商店搭建
  4. 计算机网络科研项目申请书,唐乾利:如何进一步完善医药类科研课题申请书
  5. DOE全因子实验设计报告
  6. LabWindows/CVI入门之第二章:GUI开发
  7. 高阶常微分方程的求解
  8. 传奇服务器修改物品名字,幽冥传奇服务端目录说明及幽冥传奇开服修改文件目录...
  9. 黑鲨给电脑重装系统的详细步骤
  10. python b站弹幕分析_Python获取B站视频弹幕 简单处理