有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?
【1】根据2^10=1024,所以10个老鼠可以确定1000个瓶子具体哪个瓶子有毒。具体实现跟3个老鼠确定8个瓶子原理一样。
000=0
001=1
010=2
011=3
100=4
101=5
110=6
111=7
一位表示一个老鼠,0-7表示8个瓶子。也就是分别将1、3、5、7号瓶子的药混起来给老鼠1吃,2、3、6、7号瓶子的药混起来给老鼠2吃,4、5、6、7号瓶子的药混起来给老鼠3吃,哪个老鼠死了,相应的位标为1。如老鼠1死了、老鼠2没死、老鼠3死了,那么就是101=5号瓶子有毒。
同样道理10个老鼠可以确定1000个瓶子
【2】2的10次方=1024,现在先将老鼠排成一列,做一个数列,1表示老鼠是活的,0表示老鼠是死地,做完实验之后这十只老鼠的状态可以有1024种,现在从结果来推断实验方法。因为做实验,我们不算没有老鼠死亡的那一种情况,然后
第一种1000000000情况表示1号老鼠死亡,其他存活,这是第一瓶有毒的结果,因此第一瓶液体只给编号为1的老鼠喝,
第二种0100000000情况表示1,2号老鼠死亡,其他存活,这是第二瓶有毒的结果,因此第二瓶液体只给编号为2的老鼠喝,
同理类推,用排列组合的方法继续。
这是用可能结果确定怎么做实验,现在根据上面的做实验,就可以推出结果了。
推演题:
问:如果你有两个星期的时间(换句话说你可以做两轮实验),为了从1000个瓶子中找出毒药,你最少需要几只老鼠?注意,在第一轮实验中死掉的老鼠,就无法继续参与第二次实验了。
答:7只老鼠就足够了。事实上,7只老鼠足以从 3^7 = 2187 个瓶子中找出毒药来。首先,把所有瓶子从0到999编号,然后全部转换为7位三进制数。现在,让第一只老鼠喝掉所有三进制数右起第一位是 2 的瓶子,让第二只老鼠喝掉所有三进制数右起第二位是2的瓶子,等等。一星期之后,如果第一只老鼠死了,就知道毒药瓶子的三进制编号中,右起第一位是2;如果第二只老鼠没死,就知道毒药瓶子的三进制编号中,右起第二位不是2,只可能是0或者1……也就是说,每只死掉的老鼠都用自己的生命确定出了,三进制编号中自己负责的那一位是2;但每只活着的老鼠都只能确定,它所负责的那一位不是2。于是,问题就归约到了只剩一个星期时的情况。在第二轮实验里,让每只活着的老鼠继续自己未完成的任务,喝掉它负责的那一位是 1 的所有瓶子。再过一星期,毒药瓶子的三进制编号便能全部揭晓了。
总结:n只小白鼠和t周的时间可以从(t+1)^n个瓶子中检验出毒药(一瓶)来。(是否是“至多”(t+1)^n瓶希望你们能想个法子证明或证伪:P)
分享到:
相关推荐
小白鼠钻迷宫.txt 带头结点双链循环线性表.txt 平方根.txt 建树和遍历.txt 建立链表1.txt 扫描码.txt 挽救软盘.txt 换位递归.txt 排序法.txt 推箱子.txt 数字移动.txt 数据结构.txt 数据结构2.txt ...
小白鼠钻迷宫.txt 带头结点双链循环线性表.txt 平方根.txt 建树和遍历.txt 建立链表1.txt 扫描码.txt 挽救软盘.txt 换位递归.txt 排序法.txt 推箱子.txt 数字移动.txt 数据结构.txt 数据结构2.txt ...
标题中的“小白鼠问题”通常是指一个经典的计算机科学问题,它与递归和回溯算法有关,有时也被称作“N只老鼠的问题”。在这个问题中,有若干只小白鼠(通常为N只)和同样数量的洞穴,每只小白鼠必须进入一个不同的...
参考电脑鼠走迷宫竞赛的检索方法,在不考虑过弯速度,即近似的...相较于穷举求解的方法,洪水填充算法的时间复杂度明显更低,而且对比DFS与BFS算法,这种算法可以一次性得出最优的行进路径,从而达到最优且高效的解法。
小白鼠钻迷宫.c 扫描码.C 挽救软盘.c 汉字字模.c 神经元模型.c 穷举搜索法.c 简单数据库.c 编程汉字问题.txt 编随机数.c 试题.C 递堆法.C ./单元加: erre2.c erre.c 数组完全单元.c 栈单元加.c ./字符: ...
- `小白鼠钻迷宫.txt`:这可能是一个经典的图论问题,可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来解决,这两种算法都是数据结构的重要应用。 4. **教科书资源**:`[数据结构(C语言版)].严蔚敏_吴伟民....
本资料集锦"超级详细的数据结构程序代码集锦"涵盖了多个经典的数据结构和算法实现,以C语言编写,包括了汉诺塔、逆阵、小白鼠钻迷宫、神经元模型、编随机数、图形学画线以及网络最短路径的Dijkstra算法等多个主题。...
广东工业大学22级物联网工程C++数据结构与算法复习资料,里面包括一张22年真题试卷和楼主自己整理的复习资料,全是期末考点。本人是物联网工程绩点第一的学长,有资料需求可以联系我。
同时,书中会介绍基本的数据结构,如数组、链表、栈、队列、树和图,这些是构建高效算法的基石。 二、排序与查找 排序算法是算法学习中的核心部分,胡凡的笔记详细介绍了冒泡排序、插入排序、选择排序、快速排序、...
10. 跨学科知识的应用:文档中提到小白鼠基因与人类的高度同源性,表明该研究具有生物学和医学研究背景,这反映出现代机器人技术往往需要跨学科知识的结合。 通过这些知识点,可以看出该研究项目涉及硬件设计、...
【淘宝2011.9.21校园招聘会笔试题1】主要涵盖了计算机科学与信息技术领域的多个知识点,包括数据结构、算法、操作系统、网络协议、数据库以及编程语言相关的概念。以下是对这些知识点的详细说明: 1. **数据结构**...
在C语言中,这通常需要自定义数据结构和算法,如大整数运算。学习者会了解到如何存储和操作这些大数,以及实现基本的加减乘除运算。 **第三课 排列与组合** 排列和组合是组合数学的基础,常用于解决计数问题。排列...
- **知识点扩展**:B-Tree与AVL Tree、HashTable等数据结构在性能和应用场景上的区别。 #### 4. Web服务器检测 - **问题描述**:哪个命令可以用于检测Web服务器是否工作正常。 - **解题思路**:Telnet命令可以直接...
北京大学数据结构与算法课程作业代码,供广大学习c++的同学参考与学习
本次笔试主要涵盖了计算机基础、数据结构、面向对象编程以及算法设计等多个方面的知识。下面将分别对这些知识点进行详细阐述。 首先,精简指令集(RISC)是计算机体系结构的一个重要概念。RISC设计旨在减少指令集的...
1. **最小小白鼠数量**:利用二进制编码,1000瓶水可以用10位二进制表示,每只小白鼠对应一位,24小时内最多可以检测2^10 = 1024种情况,因此至少需要10只小白鼠。 2. **求绝对值和最大连续数字串**:这个问题可以...