1000桶酒中寻找一桶毒酒算法
来源:互联网 发布:婚纱店网络客服好做吗 编辑:程序博客网 时间:2024/04/27 14:35
有1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。现在我们用小老鼠做实验,要在1周后找出那桶毒酒,问最少需要多少老鼠,如何检测(老鼠的使用量越少越好,注意,毒性1周后才会发作,而且一周后必须出结果,所以时间紧迫)
思路:
为何需要老鼠做实验,显然是根据老鼠的死活来判断酒的毒性,每一只老鼠只有2种状态,死和活,n只老鼠就是这n个死或活的状态,应该由此敏感的联想到二进制,隐约去感知1000这个数量与n的关系,2^n能表示多少的信息量呢?2^10=1024,想到这里我们可以试着去用10个老鼠去做一下实验。
步骤:
把1000桶酒分别以10位二进制数标号,从0000000001至1111101000,从这1000个二进制数中寻找毒酒,毒酒也一定是0和1的某种组合,所以问题转化为如何得出这个组合的每一位都是多少,我们先思考如何得出第一位(从右到左)是0还是1,结论是只要把所有第一位是1的酒给一只老鼠喝,如果这只老鼠最终死了,可知毒酒的第一位一定是1,如果这只老鼠还活着,可知毒酒第一位一定是0.依次类推,我们使用10只老鼠便可判断毒酒的每一位是多少。从而得到毒酒的二进制数,转化成10进制便只是第几桶。
思路:
为何需要老鼠做实验,显然是根据老鼠的死活来判断酒的毒性,每一只老鼠只有2种状态,死和活,n只老鼠就是这n个死或活的状态,应该由此敏感的联想到二进制,隐约去感知1000这个数量与n的关系,2^n能表示多少的信息量呢?2^10=1024,想到这里我们可以试着去用10个老鼠去做一下实验。
步骤:
把1000桶酒分别以10位二进制数标号,从0000000001至1111101000,从这1000个二进制数中寻找毒酒,毒酒也一定是0和1的某种组合,所以问题转化为如何得出这个组合的每一位都是多少,我们先思考如何得出第一位(从右到左)是0还是1,结论是只要把所有第一位是1的酒给一只老鼠喝,如果这只老鼠最终死了,可知毒酒的第一位一定是1,如果这只老鼠还活着,可知毒酒第一位一定是0.依次类推,我们使用10只老鼠便可判断毒酒的每一位是多少。从而得到毒酒的二进制数,转化成10进制便只是第几桶。
0 0
- 1000桶酒中寻找一桶毒酒算法
- 1000桶酒中寻找一桶毒酒算法
- 1000桶酒中寻找一桶毒酒算法
- 1000桶酒中寻找一桶毒酒算法
- 1000桶酒中寻找一桶毒酒算法
- 毒酒问题----算法设计与编程题------有1000桶酒,其中有一桶酒有毒.......
- 1000桶酒中含两桶毒酒问题
- 1000桶毒酒问题
- Java算法面试题(009) 毒酒问题
- 数学问题:1000瓶酒找1毒酒
- 常用排序算法总结10一一桶排序
- 用十只耗子试出1000瓶中的一瓶毒酒
- 找毒酒
- 毒酒问题
- 毒酒问题
- 05 识别毒酒——几种算法和编码方式的分析和比较
- [二进制]1000桶药,有一桶有毒,用多少小白鼠测试
- 寻找众数算法
- 关于面试时向面试官询问的问题
- WP8 中常用的 WriteableBitmap和BitmapImage相互转换
- zoj 2224 - Investment
- LQR 的直观推导及简单应用
- office2013 win7 64位激活工具
- 1000桶酒中寻找一桶毒酒算法
- PresentViewController切换界面
- 如何学好C语言,一个成功人士的心得!
- 日记本开发
- 正则表达式
- 如何高效使用JavaEE ORM框架
- 如何高效使用JavaEE ORM框架
- 图的遍历:DFS和BFS
- Java内存区域详述内存溢出异常