题目
有 3 只老鼠,8 瓶药,其中一瓶有毒,喝到有毒的药之后,老鼠一周后会准时死亡。按照要求,写个算法,如何在一周内找出哪瓶有毒。(以程序语言实现,语言不限。)

基本思路
给瓶子编号 0-7,并把编号翻译成二进制串,刚好可以用三位二进制来表示。让三只老鼠分别对应三位二进制,然后形成如下交叉表:

其中二进制位为 1 的地方表示哪只老鼠吃哪瓶药,即:
老鼠 1 应该喝 4,5,6,7 号的药;
老鼠 2 应该喝 2,3,6,7 号的药;
老鼠 3 应该喝 1,3,5,7 号的药。
最后观察的时候,可以根据老鼠死了的情况,0 表示没死,1 表示死了。
比如三只老鼠死了的情况是 (1,0,1),则表示 5 号药是有毒的。因为只有这种情况下才会导致老鼠 1 和老鼠 3 死掉。

C++ 实现

#include<iostream>using namespace std;
int main()
{int NUM_MOUSE = 3;int mouseDead[NUM_MOUSE];cout << "输入老鼠存活情况,1-死了,0-活着,用空格隔开:" << endl;for (int i = 0; i < NUM_MOUSE; i++){cin >> mouseDead[i];}int drug = 0;for (int i = 0; i < NUM_MOUSE; i++){int dead = mouseDead[i];drug |= (dead << (NUM_MOUSE - i - 1));}cout << "有毒的是 " << drug << " 号药!" << endl;return 0;
}

运行结果
输入老鼠存活情况,1-死了,0-活着,用空格隔开:
1 0 1
有毒的是 5 号药!

思维拓展
1000 瓶药中找出有毒的哪瓶,毒性一周后准时发作,一周内最少需要多少只老鼠。
参考答案

答案是十只,也就是说 10 位二进制最大能表示 1024 个数字。(从 0 开始算起)

转载于:https://www.cnblogs.com/hglibin/p/10126206.html

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

  1. 有1000桶酒,其中1桶有毒.而一旦吃了,毒性会在1周后发作.现在我们用小老鼠做实验,要在1周内找出那桶毒酒,问最少需要多少老鼠.

    有1000桶酒,其中1桶有毒.而一旦吃了,毒性会在1周后发作.现在我们用小老鼠做实验,要在1周内找出那桶毒酒,问最少需要多少老鼠. 很老的笔试题了. 答案是10只. 把十只老鼠看成二进制的位数,把酒桶 ...

  2. 1000瓶水其中有一瓶水有毒,有10只老鼠并且只要老鼠喝了有毒的水必死。请问怎样通过一次实验找出有毒的那瓶水。

    1000瓶水其中有一瓶水有毒,有10只老鼠并且只要老鼠喝了有毒的水必死.请问怎样通过一次实验找出有毒的那瓶水. . 这道题知识点:二进制. 解题思路:2的10次方等于1024,1024以内的所有自然数 ...

  3. 面试题:1000瓶水其中有一瓶水有毒,有10只老鼠并且只要老鼠喝了有毒的水必死。请问怎样通过一次实验找出有毒的那瓶水。

    面试题:1000瓶水其中有一瓶水有毒,有10只老鼠并且只要老鼠喝了有毒的水必死.请问怎样通过一次实验找出有毒的那瓶水. 1.  知识点:二进制. 解题思路:此题考察的是二进制.2的10次方等于1024 ...

  4. 有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒?

    1.有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒. 我来解释一下,并给出一个方案,时间不是问题,24小时内肯定可以找出 ...

  5. 一千瓶酒有一瓶酒有毒药,问你最少用多少只老鼠可以找出那瓶毒酒? 老鼠毒发的时间在两小时内,要求在两个小时内找出毒酒。

    题目: 一千瓶酒有一瓶酒有毒药,问你最少用多少只老鼠可以找出那瓶毒酒? 老鼠毒发的时间在两小时内,要求在两个小时内找出毒酒. public class Demo03 { public static v ...

  6. 假设有100个瓶子,其中只有1瓶有毒药,你现在有7只老鼠,怎么检测出那一瓶是由毒的(老鼠喝到有毒的就会死)

    对100瓶毒药进行二进制编码:0000001,0000010,-,1100100 老鼠分别为A,B,C,D,E,F,G A老鼠喝编码格式为1xxxxxx的药水 B老鼠喝编码格式为x1xxxxx的药水 ...

  7. 16瓶药水一瓶有毒,去小白鼠测试哪一瓶水有毒?

    16瓶药水一瓶有毒,去小白鼠测试哪一瓶水有毒? 面试的时候有个面试官问我,有16瓶药水,其中一瓶有毒,一只小白鼠喝过之后,一天之后会死亡,要求在少于15只小白鼠的情况下判断出哪一瓶有毒,药水可以兑在一 ...

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

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

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

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

最新文章

  1. 伦敦大学学院开源物体级语义SLAM!支持单/双目+LiDAR!
  2. Chrome现在也能编辑pdf文件了!64位安卓版上线,网页加载快10%,还有良心标签管理功能...
  3. 主机动手系列 — 怎么管理Suse Linux
  4. springmvc提供RestController方法接口返回json数据中文乱码
  5. C++counting sort计数排序(针对string)的实现算法(附完整源码)
  6. 学习 jQuery下拉框,单选框,多选框整理
  7. 牛客练习赛70 重新排列
  8. MySQL作为Kubernetes服务,可从WildFly Pod访问
  9. jar/war/ear文件的区别
  10. mysql 查询某个字段SQL语句【mysql语句】
  11. DDLog-不同颜色打印信息
  12. pl/sql developer 安装svn插件 64位
  13. c语言程序怎么打分数,用C语言编程平均分数
  14. 用C#製作PDF文件全攻略
  15. LeetCode详解C++版
  16. 语音识别软件测试面试,软件测试之ASR(语音识别)评测学习
  17. gitlab自定义头像设置
  18. OpenGL 中的 Render To Texture
  19. 大数据时代的背景下 校园安防管理软件平台发展变化
  20. 深度学习读书笔记:DeepLearningBook - Chapter 9 - Conventional Networks

热门文章

  1. 你是阳光,你的世界充满阳光---心在哪,成就就在哪
  2. 关于STM32的裸机多任务多线程心得
  3. 微信小程序-slot插槽
  4. 【跟我学Puppet】1.5 Puppet 3.7 使用Hiera定义配置
  5. Unreal Engine 4 渲染目标(Render Target)教程 之 实现雪地足迹(下)
  6. 参考文献起止页码怎么写_【求助】有全文参考文献但没有起止页码如何办
  7. Mac上怎么把mov文件转成gif文件
  8. 快手发布《2021磁力引擎营销通案》,以信任基因赋能全域营销
  9. 文本分类上分利器: Bert微调trick大全
  10. 微信公众号基础04_分享和录音功能的实现