老鼠试药——二进制算法
来源:互联网 发布:finale for mac 编辑:程序博客网 时间:2024/06/05 00:13
老鼠试药
现有一千瓶药水,其中九百九十九瓶是完全一样的,只有一瓶里面是毒药,但是外观上分辨不出来。毒药给小白鼠喝了后,一星期后这只小白鼠会突然死亡,但之前一点症状也没有。现需要在一星期后找出哪瓶是毒药,问至少需要几只小白鼠?
答案
二进制问题,10只即可,10只最多可测试1024瓶药水
问题解析
瓶子编号:给每个瓶子用二进制编号,总共有1000瓶,2的10次方等于1024,只需用十位二进制就可表示所有的瓶子,每一位依次用w1、w2、…w10表示。
老鼠编号:十位二进制c1、c2、…c10分别给十只老鼠编号,
编号c1的老鼠只喝w1位上为1的药水瓶,编号c2的老鼠只喝w2位上为1的药水瓶,依次类推。最后看哪些老鼠死掉,例如c10、c8、c7、c4、c3、c1编号的老鼠死掉,那么有毒药水的编号就是10 1100 1101
简化一下:如果只有8瓶,至少需要几只老鼠???
药水瓶编号是000 001 010 011 100 101 110 111,
三位二进制w1、w2、w3
三只老鼠是c1、c2、c3,
老鼠c1、c2、c3与三位二进制w1、w2、w3一一对应
c3喝: 100 101 110 111(第三位是1的都喝)
c2喝: 010 011 110 111(第二位是1的都喝)
c3喝: 001 011 101 111(第一位是1的都喝)
最后假设c3死了,那么100是毒药
假设c3c2死了,那么110是毒药
c2c1死了,那么011是毒药,
类推,哪只老鼠死对应位上就是1,没死为0,得出的结果就是毒药瓶编号
1 0
- 老鼠试药——二进制算法
- 老鼠试药
- 老鼠试药问题
- 算法实现:二进制老鼠测毒
- 淘宝2012笔试题——小白鼠试药
- 搜索算法——电子老鼠闯迷宫
- 猫吃老鼠算法
- 老鼠走迷宫算法
- 猫吃老鼠算法
- 老鼠试毒算法
- 算法 老鼠迷宫问题
- 小白鼠试药
- 小白鼠试药
- 贪心算法胖老鼠问题
- 趣味算法:老鼠试毒瓶问题
- 老鼠走迷宫递归算法
- 老鼠
- 老鼠
- 安卓项目之淘忆2.0的代码实现之主页底部的导航栏功能
- 纯虚函数 & 实例化
- HDU 1061 快速幂算法
- html5新标签dataList
- NKACM1001
- 老鼠试药——二进制算法
- SpringMVC 常用注解整理
- Android -- json数据格式解析练习
- 存储类相关的关键字
- android垃圾回收机制及程序优化System.gc
- BZOJ1603 NOI2008 设计路线 树形dp
- HTML5(七)表格-table标签、tr标签、td标签
- vector::insert, vector::max_size, vector::operator=
- 使用Spring的Log4jConfigListener动态加载log4j