栖息谷-管理人的网上家园

[脑力无限] 黑帽子问题

[复制链接] 9
回复
2365
查看
打印 上一主题 下一主题
楼主
跳转到指定楼层
分享到:
发表于 2009-2-20 18:13:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其它人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什幺帽子,然后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直到第三次关灯,才有劈劈啪啪打耳光的声音响起。问有多少人戴着黑帽子?


[此贴子已经被作者于2009-2-20 18:13:48编辑过]
沙发
发表于 2009-3-5 21:45:36 | 只看该作者
至少有2顶
板凳
 楼主| 发表于 2009-3-6 08:34:14 | 只看该作者
楼上说的不是很正确啊,如果有两顶的话,那第二次关灯是不是应该就有响声了?!
4
发表于 2009-4-3 17:13:06 | 只看该作者

3

据说是微软的面试题

5
 楼主| 发表于 2009-4-3 20:05:58 | 只看该作者
QUOTE:
以下是引用1982120在2009-4-3 17:13:06的发言:

3

据说是微软的面试题

不错,回答正确

6
发表于 2009-6-6 22:08:37 | 只看该作者
3是正确的,可以肯定
7
发表于 2009-6-7 09:18:58 | 只看该作者
怎么判断的?
8
发表于 2009-6-9 22:43:56 | 只看该作者
3个
9
发表于 2009-6-10 08:17:34 | 只看该作者
3
10
 楼主| 发表于 2009-6-10 09:31:38 | 只看该作者

面对这样的推理,我们可以用if--else来表示:
但你首先碰到一个难题,就是我们如何推理,用什么样的方法,才能把这个问题解决。
其实这个可以利用我们从买衣服那里得到的道理:找出我们的条件,这是最重要的。
思前想后,终于想出了我假设的条件:
if(舞会中黑帽子==1) //如果舞会中只有一顶黑帽子
   带黑帽子的人看到都是白帽子,肯定就知道自己是黑帽子,
   预期结果:应该给自己一耳光
   实际结果:没有听见声音,(呵呵,发现一bug)所以这种情况是不成立的
else if(舞会中黑帽子==2)//如果舞会中只有两顶黑帽子。
     带黑帽子的人应该看到别人带了一顶黑帽子,因为舞会只有两顶黑帽子,所以
     自己肯定是带黑帽子的人。
     预期结果:应该听见两声耳光
     实际结果:没有听见耳光.
else if(舞会中黑帽子==3)//如果舞会中只有三顶黑帽子
     带黑帽子的人应该看到两顶黑帽子,和一堆白帽子。因为舞会只有三顶黑帽
     子,所以自己肯定是带黑帽子的人。
     预期结果:应该听见耳光声
     实际结果:听见耳光声。(呵呵,符合情况,bug已修复)
上面的这道题,据说是微软/IBM考察软件测试工程师面试题。当然还有一个死狗问题,跟这个差不多。就不祥谈了。为啥考这样的题目,经过一分析应该知道了。考察的是1.你有没有逻辑思维。2.有没有测试思维。
我每次讲到C的时候,都会插入这么段小故事,目的就是让大家明白。对于选择结构而言,最重要的就是,要清楚的了解条件是什么。只有知道了条件,其他的都会水到渠成。


使用高级回帖 (可批量传图、插入视频等)快速回复

您需要登录后才可以回帖 登录 | 加入

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
快速回复 返回顶部 返回列表