有 3 只老鼠,8 瓶水,其中一瓶有毒,喝到有毒的水之后,老鼠一周后会准时死亡。...
题目
有 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 瓶水,其中一瓶有毒,喝到有毒的水之后,老鼠一周后会准时死亡。...相关推荐
- 有1000桶酒,其中1桶有毒.而一旦吃了,毒性会在1周后发作.现在我们用小老鼠做实验,要在1周内找出那桶毒酒,问最少需要多少老鼠.
有1000桶酒,其中1桶有毒.而一旦吃了,毒性会在1周后发作.现在我们用小老鼠做实验,要在1周内找出那桶毒酒,问最少需要多少老鼠. 很老的笔试题了. 答案是10只. 把十只老鼠看成二进制的位数,把酒桶 ...
- 1000瓶水其中有一瓶水有毒,有10只老鼠并且只要老鼠喝了有毒的水必死。请问怎样通过一次实验找出有毒的那瓶水。
1000瓶水其中有一瓶水有毒,有10只老鼠并且只要老鼠喝了有毒的水必死.请问怎样通过一次实验找出有毒的那瓶水. . 这道题知识点:二进制. 解题思路:2的10次方等于1024,1024以内的所有自然数 ...
- 面试题:1000瓶水其中有一瓶水有毒,有10只老鼠并且只要老鼠喝了有毒的水必死。请问怎样通过一次实验找出有毒的那瓶水。
面试题:1000瓶水其中有一瓶水有毒,有10只老鼠并且只要老鼠喝了有毒的水必死.请问怎样通过一次实验找出有毒的那瓶水. 1. 知识点:二进制. 解题思路:此题考察的是二进制.2的10次方等于1024 ...
- 有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒?
1.有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒. 我来解释一下,并给出一个方案,时间不是问题,24小时内肯定可以找出 ...
- 一千瓶酒有一瓶酒有毒药,问你最少用多少只老鼠可以找出那瓶毒酒? 老鼠毒发的时间在两小时内,要求在两个小时内找出毒酒。
题目: 一千瓶酒有一瓶酒有毒药,问你最少用多少只老鼠可以找出那瓶毒酒? 老鼠毒发的时间在两小时内,要求在两个小时内找出毒酒. public class Demo03 { public static v ...
- 假设有100个瓶子,其中只有1瓶有毒药,你现在有7只老鼠,怎么检测出那一瓶是由毒的(老鼠喝到有毒的就会死)
对100瓶毒药进行二进制编码:0000001,0000010,-,1100100 老鼠分别为A,B,C,D,E,F,G A老鼠喝编码格式为1xxxxxx的药水 B老鼠喝编码格式为x1xxxxx的药水 ...
- 16瓶药水一瓶有毒,去小白鼠测试哪一瓶水有毒?
16瓶药水一瓶有毒,去小白鼠测试哪一瓶水有毒? 面试的时候有个面试官问我,有16瓶药水,其中一瓶有毒,一只小白鼠喝过之后,一天之后会死亡,要求在少于15只小白鼠的情况下判断出哪一瓶有毒,药水可以兑在一 ...
- 1000瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验。喝了无毒的药水第二天没事儿,喝了有毒的药水后第二天会死亡。如何在一天之内(第二天)找出这瓶有毒的药水?
题目:1000 瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验.喝了无毒的药水第二天没事儿,喝了有毒的药水后第二天会死亡.如何在一天之内(第二天)找出这瓶有毒的药水? 第一次看这个问题完全 ...
- 题目:1000 瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验。喝了无毒的药水第二天没事儿,喝了有毒的药水后第二天会死亡。如何在一天之内(第二天)找出这瓶有毒的药水?
题目:1000 瓶无色无味的药水,其中有一瓶毒药,10只小白鼠拿过来做实验.喝了无毒的药水第二天没事儿,喝了有毒的药水后第二天会死亡.如何在一天之内(第二天)找出这瓶有毒的药水? 第一次看这个问题完全 ...
最新文章
- 伦敦大学学院开源物体级语义SLAM!支持单/双目+LiDAR!
- Chrome现在也能编辑pdf文件了!64位安卓版上线,网页加载快10%,还有良心标签管理功能...
- 主机动手系列 — 怎么管理Suse Linux
- springmvc提供RestController方法接口返回json数据中文乱码
- C++counting sort计数排序(针对string)的实现算法(附完整源码)
- 学习 jQuery下拉框,单选框,多选框整理
- 牛客练习赛70 	重新排列
- MySQL作为Kubernetes服务,可从WildFly Pod访问
- jar/war/ear文件的区别
- mysql 查询某个字段SQL语句【mysql语句】
- DDLog-不同颜色打印信息
- pl/sql developer 安装svn插件 64位
- c语言程序怎么打分数,用C语言编程平均分数
- 用C#製作PDF文件全攻略
- LeetCode详解C++版
- 语音识别软件测试面试,软件测试之ASR(语音识别)评测学习
- gitlab自定义头像设置
- OpenGL 中的 Render To Texture
- 大数据时代的背景下 校园安防管理软件平台发展变化
- 深度学习读书笔记:DeepLearningBook - Chapter 9 - Conventional Networks
热门文章
- 你是阳光,你的世界充满阳光---心在哪,成就就在哪
- 关于STM32的裸机多任务多线程心得
- 微信小程序-slot插槽
- 【跟我学Puppet】1.5 Puppet 3.7 使用Hiera定义配置
- Unreal Engine 4 渲染目标(Render Target)教程 之 实现雪地足迹(下)
- 参考文献起止页码怎么写_【求助】有全文参考文献但没有起止页码如何办
- Mac上怎么把mov文件转成gif文件
- 快手发布《2021磁力引擎营销通案》,以信任基因赋能全域营销
- 文本分类上分利器: Bert微调trick大全
- 微信公众号基础04_分享和录音功能的实现