经典面试(1) 二分法与二进制
来源:互联网 发布:淘宝2012新规则 编辑:程序博客网 时间:2024/05/29 09:50
经典软件面试题(1)
1000瓶酒中只有1瓶毒酒,给你10只老鼠,每只老鼠只能喝一次,如何检测出这瓶毒酒?
知识点:二进制。
解题思路:此题考察的是二进制。2的10次方等于1024,1024以内的所有自然数都可以用10个数位的二进制数表示出来。1000小于1024,此题可解。
将1000瓶酒从1到1000分别进行编号,并转化成10个数位的二进制数表示。
编号
转化成二进制
1
0000000001
2
0000000010
3
0000000011
4
0000000100
…
…
999
1111100111
1000
1111101000
从每瓶酒中取出若干滴,取几滴由10个数位上1的个数决定,每滴放入10个大碗对应的碗中(为了描述的方便,假设有10个大碗,并从1到10进行编号)。最后,让10只老鼠分别喝10个碗中的酒。被毒死的老鼠用1表示,没有被毒死的老鼠用0表示,这样就构成了一个10个数位的二进制数,这个二进制数转换成10进制数,就是酒瓶的编号,此编号的这瓶酒就是毒酒。
第2种作法:
前500瓶,每瓶取一点,放在一起,给第1只老鼠喝,老鼠死了,就是前500瓶,如果没死,就在后500瓶,即第1只老鼠可以将范围缩小一半到500瓶。
500瓶的一半250瓶,每瓶取一点,放在一起,给第2只老鼠喝,老鼠死了,就是所取的250瓶,如果没死,就在另外250瓶,即第2只老鼠可以将范围再缩小一半到250瓶。
第3只老鼠,将范围再缩小到125瓶。
第4只老鼠,将范围再缩小到63瓶。
第5只老鼠,将范围再缩小到32瓶。
第6只老鼠,将范围再缩小到16瓶。
第7只老鼠,将范围再缩小到8瓶。
第8只老鼠,将范围再缩小到4瓶。
第9只老鼠,将范围再缩小到2瓶。
第10只老鼠,将范围再缩小到1瓶。
转自 http://blog.csdn.net/songjinshi/article/details/8070624
通过这个问题可以考虑 上述问题 N瓶酒在最坏的情况下需要多少老鼠才能测出 ?
用二分法 , 2瓶酒 用1只老鼠 喝一瓶可以判断出是哪瓶
4瓶酒 此时瓶数分为2*2 , 用2只老鼠 第一只判断在哪2瓶中 ,剩下那只判断是哪一瓶
8瓶 2* 2 * 2 3只
.......
1024 = 2的10次 10只
- 经典面试(1) 二分法与二进制
- 经典算法面试与解答(二)
- php经典算法(二分法、快速排序)
- 【LeetCode-面试算法经典-Java实现】【067-Add Binary(二进制加法)】
- 经典面试问题与点评
- 经典面试问题与点评
- C++二分法经典例子
- 二分法经典题目
- 经典的二分法
- 程序员面试经典编程(1)
- JSP面试(经典)
- 面试算法(九)二进制中1的个数
- 面试--n的二进制1的个数(46)
- C语言之linux内核--BCD码转二进制与二进制转BCD码(笔试经典)
- 二分法与快排结合(2)
- java(算法1)二分法
- JAVA面试经典--“==”与“equals”
- 面试训练二进制中1的个数
- Linux内核裁剪(2.4)
- 在对话框上按回车键,enter 关闭对话框
- VC调试经验
- Java编程中“为了性能”需做的26件事
- Java高级面试题【转】
- 经典面试(1) 二分法与二进制
- Java程序员面试中的多线程问题
- jqury---单击时我们改变样式
- JSP,JS获得项目路径
- 浅谈Java中的几种随机数
- 深入理解ARM体系架构(S3C6410)---arm7,arm9,arm11区别
- .vm后缀的文件 velocity
- Spring与mybatis的整合实践之SqlSessionDaoSupport抽象类
- contentWindow 和 contentDocument