微软面试题
2013-05-04 10:17
204 查看
这是我认为今年微软面试题中最有意思的一道,这道题很考验一个人的思维,但我们看到答案时,我们就能感到这道题解题的巧妙。故将解题思路分享出来,顺便谈谈我的看法,以下是对于这道题的分析 :
原题:
1000瓶水中有一瓶是有毒的,老鼠喝任意量的毒水都会在一周后死亡,问一周内至少用多少只老鼠可以测出哪瓶水是有毒的?
分析:
这道题目很短,但是我们却很难有一个解题的切入点,但我们都习惯十进制,这样我们都陷入了一种惯性思维中,很难想出这道题跟二进制数之间的渊源。试想一下,如果我们把每个瓶子的编号都化成二进制数的话,我们至多需要10bit的数来表示这些编号(2的10次方=1024>1000)。要确定含有毒水瓶的编号,我们只需要确定那个10bit的二进制数的每一位的0、1取值。只有确定了每一位的取值。那么我们就能得到我们的答案。那么我们选取10只老鼠,每只老鼠对应10bit中的一位。然后,让每只老鼠喝下对应bit位为1的瓶子编号的水。如果该老鼠死,那没则说明,含有毒水瓶子的编号的二进制数在该bit上对应为1;否则,对应为0;
解到这里,你会发现这道题思路十分的精妙。但是我们可以进一步发散我们的思维,比如如果给你两周需要多少只,假如是N周呢?呵呵,这时候我们是否能从之前的解题思路中得到启发呢?假设给你两周,那么我们将会有两轮测试机会,那么我们可以将瓶子编号化成3进制数,刚好,经过两轮测试是可以确定每一位的值,这样我们可以进一步推广到N周的情况。假设我们需要的老鼠数是x,那么我们可以列出方程
通过求对数我们便可以解出x,由一般到推广,这个题还是很有启发性的。
本文出自 “大工软院的技术生活” 博客,请务必保留此出处http://webcrawler.blog.51cto.com/3663163/1192759
原题:
1000瓶水中有一瓶是有毒的,老鼠喝任意量的毒水都会在一周后死亡,问一周内至少用多少只老鼠可以测出哪瓶水是有毒的?
分析:
这道题目很短,但是我们却很难有一个解题的切入点,但我们都习惯十进制,这样我们都陷入了一种惯性思维中,很难想出这道题跟二进制数之间的渊源。试想一下,如果我们把每个瓶子的编号都化成二进制数的话,我们至多需要10bit的数来表示这些编号(2的10次方=1024>1000)。要确定含有毒水瓶的编号,我们只需要确定那个10bit的二进制数的每一位的0、1取值。只有确定了每一位的取值。那么我们就能得到我们的答案。那么我们选取10只老鼠,每只老鼠对应10bit中的一位。然后,让每只老鼠喝下对应bit位为1的瓶子编号的水。如果该老鼠死,那没则说明,含有毒水瓶子的编号的二进制数在该bit上对应为1;否则,对应为0;
解到这里,你会发现这道题思路十分的精妙。但是我们可以进一步发散我们的思维,比如如果给你两周需要多少只,假如是N周呢?呵呵,这时候我们是否能从之前的解题思路中得到启发呢?假设给你两周,那么我们将会有两轮测试机会,那么我们可以将瓶子编号化成3进制数,刚好,经过两轮测试是可以确定每一位的值,这样我们可以进一步推广到N周的情况。假设我们需要的老鼠数是x,那么我们可以列出方程
通过求对数我们便可以解出x,由一般到推广,这个题还是很有启发性的。
本文出自 “大工软院的技术生活” 博客,请务必保留此出处http://webcrawler.blog.51cto.com/3663163/1192759
相关文章推荐
- 微软、google、雅虎、百度等各大著名公司的经典面试题!保证搞晕你!!
- 微软面试题——字符串转换成double类型数字
- 微软的面试题及答案
- 微软面试题【2】
- 微软面试题--找数组中唯一出现两次的数
- 微软的面试题及答案-超变态但是很经典 (1)
- 来自苹果、谷歌、微软等知名公司六道有趣智力面试题,试试吧
- 关于那道精典的微软面试题:井盖为什么是圆的?
- 微软,Google面试题 (11) —— 求二叉排序树的镜像
- 整理的微软面试题
- 微软,Google面试题 (31) —— 从尾到头输出链表
- (转)微软面试题
- 微软的面试题
- 经典面试题(一)附答案 算法+数据结构+代码 微软Microsoft、谷歌Google、百度、腾讯
- 微软面试题,将二叉排序树转换成双向链表
- 批判下微软的sql面试题
- 2014微软面试题
- 微软面试题--五个海盗分100个宝石(博弈)
- C/C++ 微软面试题 -链表
- 微软面试题