有8瓶药,其中只有一瓶是毒药,我们有三只老鼠,能被毒药很快毒死。请问最少几次能把毒药试出来?

这类题目,首先要明确的是,一只老鼠可以同时喝不止一瓶药水,否则就只能一瓶一瓶的试下去了。明确了这件事,问题就变成了三只老鼠分别喝了几瓶药水之后,有多少种状态的问题,三只老鼠每一只都对应着死或者不死两种状态,而且是独立的,总的状态是2的3次方等于8。这道题中,药水的数量正好是8。

1,二分法

第一步:将8瓶药对半分,将其中的一半,也就是4瓶分别倒出一点,混合后喂小白鼠。小白鼠亡,说明毒药就在这4瓶里面。没死,说明毒药在另外的4瓶里面。这里我们假定小白鼠一命呜呼了。

第二步:将那4瓶药剂对半分,将其中的一半,也就是两瓶混合后喂第二只小白鼠。第二只小白鼠亡,说明毒药就在这两瓶里面的其中一瓶。没死,说明毒药在另外的2瓶里面。这里我们假定小白鼠也一命呜呼。

第三步:有嫌疑的那两瓶药剂,将其中一瓶倒出一点喂最后一只老鼠,亡,这瓶有毒药,没亡,另一瓶有毒药。

备注:采用此法,最多牺牲3只小白鼠就能找到答案。运气最好时,就是每一次试验,小白鼠都没死,此时,一只小白鼠都不用牺牲。不是最优。

2.

由于老鼠有两种状态生或死
对毒药瓶编号
利用集合的交与差和并的逻辑关系,故意设置好对应的条件,三个老鼠都活下来就是1号。
a鼠喝5678,b鼠喝3478,c鼠喝2468。

3

二进制

让3只小白鼠列队站成一线。将8瓶药,按照0到7一一标出来。
为什么要这么标,因为一个3位的二进制能表示出8种状态,转换为十进制的话就是0到7。

二进制十进制

000 0

001 1

010 2

011 3

100 4

101 5

110 6

111 7

到这里,很多人就清楚了,3只小白鼠,可以当成一个3位的二进制。
  现在,我要把编号为1、3、5、7的药剂分别倒出一点,混合后给小灰喝。”,“接着,把编号为2、3、6、7中的药剂分别倒出一点,混合后给小白喝。最后,把编号为4、5、6、7中的药剂分别倒出一点,混合后给小棕喝。

综上所述,方案2最优

算法思考题-三只老鼠找8瓶毒药思路(个人思考+收集)相关推荐

  1. 7只老鼠找除100瓶水的有毒的水

    package com.test;import java.util.ArrayList; import java.util.List;/*** @ClassName* @Description* @A ...

  2. 有 3 只老鼠,8 瓶水,其中一瓶有毒,喝到有毒的水之后,老鼠一周后会准时死亡。...

    题目 有 3 只老鼠,8 瓶药,其中一瓶有毒,喝到有毒的药之后,老鼠一周后会准时死亡.按照要求,写个算法,如何在一周内找出哪瓶有毒.(以程序语言实现,语言不限.) 基本思路 给瓶子编号 0-7,并把编 ...

  3. 10只老鼠与1000瓶药水

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

  4. 幽默笑话-三只老鼠的言论

    三只老鼠的言论 三只老鼠在吹牛. 甲:我把鼠药当脑白金吃! 乙:我住的那地方全是老鼠夹,我总在那里跳的士高! 丙看了看表:不和你们讲了,陪我睡觉的猫快来了-- 连好也不问了 一人教鹦鹉说话,每早必对它 ...

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

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

  6. 智力题:1000瓶酒.10只老鼠.有一瓶酒有毒,每只老鼠可以喝无限多的酒,如何测一次就找出哪瓶酒有毒

    这是一道面试的智力题目: 每瓶给一个编号.把编号做成二进制. 2的10次方=1024 (最多可以一次性检验1024瓶). 老鼠也排成一排,编号 1-10 把1000瓶都给小老鼠喝掉 (二进制为1的就喝 ...

  7. 1000瓶酒其中1瓶有毒,10只老鼠找出毒酒

    1: 折半查找的方式       容易理解 500瓶每瓶1滴放在一起看老鼠喝了死不死       依次类推 250->125->63->32->16->8->4-& ...

  8. NOJ1042——算法实验三——电子老鼠闯迷宫

    电子老鼠闯迷宫 描述: 有一只电子老鼠被困在如下图所示的迷宫中.这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色部分是路.电子老鼠可以在路上向上.下.左.右行走,每一步走一个格子.现给定一 ...

  9. JAVA常见算法题(三十二)---找规律

    题目一: 4,5,15,45,135,405,__ 题目二: 524,244,954,674,394,15,725, __ 题目三: 7,8,6,9,10,7,4,4,5,__ 求横线位置的整数. * ...

  10. 算法乐趣--三只水桶等分水问题

    有一个容积为8升的水桶里装满了水,另外还有一个容积为3升的空桶和一个容积为5升的空桶,如何利用这两个空桶等分8升水?附加条件是三个水桶都没有体积刻度,也不能使用其它辅助容器. 这是一道经典题目,一般人 ...

最新文章

  1. android 多个占位符,Android多语言支持:由于占位符计数不同导致的字符串格式问题...
  2. 智能车竞赛技术报告 | 双车接力组 - 大连海事大学 - 同舟拾贰队
  3. linux下echo命令详解(转)
  4. DeepHSV:号称可以商用的计算机笔迹鉴别算法
  5. 甲骨文将Exadata Cloud转化为内部软件包
  6. 易语言 java支持_开源Java客户端可以连接易语言服务器
  7. Facebook的技术布局,有哪些值得学习的秘密
  8. Spring的XML解析原理,java软件开发面试常见问题
  9. [转载]QMessageBox 用法
  10. C语言volatile关键字
  11. Oracle 锁表查询和解锁方法
  12. matlab 水文频率曲线,水文频率曲线matlab
  13. java scene_JavaFX中场景(Scene)的意义是什么?
  14. shiro ajax 验证码,关于Shiro登录报验证码错误的问题
  15. Java基础教程笔记
  16. Wasserstein距离
  17. 比较无线局域网和无线广域网的特征
  18. 网络文件存储系统(三)fastdfs分布式文件系统实战
  19. android系统凭据存储,存储登录凭据android
  20. 让Flows感知生命周期

热门文章

  1. Hibernate逍遥游记-第13章 映射实体关联关系-005双向多对多(使用组件类集合\composite-element\)...
  2. PHP-用ThinkPHP和Bootstrap实现用户登录设计
  3. 在北京工作5年的程序员,通过人才引进入职县城事业编,月薪曝光
  4. IDEA - 官方定制主题,Dark Purple theme,Cyan Light Theme,Gray Theme
  5. 9.无 线 网 络 和 移 动 网 络
  6. 佩服的一个阿里 P9 大佬,离职了...
  7. SAP HANA数据获取(data provisioning ) - SLT
  8. nginx学习,看这一篇就够了:使用:正向代理、反向代理、负载均衡, 常用命令和配置文件
  9. 命主属性是水什么意思_​五行中,你属什么就是什么样的人!太准了~
  10. oracle减去30分钟,Oracle 5分钟或30分钟分割方法