面试题目- 到底有几条病狗

题目:
    村子里有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个人可以观察其他的49条狗,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。第一天,第二天都没有枪响。到了第三天传来一阵枪声,问有几条病狗,如何推算得出?

    分析:
1. 如果只有一条病狗,根本就没有这么多故事。病狗主人的心理活动如下。病狗主人看到49条好狗,又已知50只狗里有病狗。那推出自己的狗有病就是必然了。月黑风高杀狗夜,寂静的山村荡起一阵枪声……
2. 同样是只有一条病狗的第一天,看看其余的狗主人是怎么想的。其余的主人看到有一条病狗,不知道自己的是不是病狗,那么他就绝对不会开枪杀自己的狗,因为没有在证据,同样他也不会一口咬定自己的狗没问题,也因为没有证据。他所能使用的确定病狗数目的方式就是等待。
3. 如果第一天晚上没有枪响,说明什么?病狗不止一只,因为一只绝对活不了呀。病狗主人只看到一只病狗,晚上丫的还没动静。说明,昨晚上他看到的那只病狗的主人跟他想法一样。等对方开枪呢。大于一只,小于三只,而他只看到一只,那自己的就肯定是病狗罗。子弹上膛,开火,吃狗肉……其余的狗主人看到了两只病狗,又由于上面人的心境,他们早就猜到了第一天晚上不会有枪响的事实。继续等待。
4. 如果第二天晚上也没响,人群中只看到一条,两条病狗的情况已经被排除了,肯定有人看到三条或三条以上的病狗了。如果第n天没响枪,局外人可以认定至少有n+1条病狗;主人们则要么等待,要么决定晚上下手。
5. 第三天枪响了,说明一共三只狗病了。
由题目,不管是第几天,大伙儿开枪了,所有的病狗都干掉了,那么我们能得出什么样的直接结论呢?由于病狗的主人是看不到自己的狗的,那么病狗主人肯开枪的依据就只有一条:他敢确定,所有的病狗数比他看到的病狗数少1. 而这个病狗的确切数字要么是自己看到的病狗的数目,要么是那个数目再加上自己的那一条。每一位主人能做的就是数数自己能看到的n条病狗后,前n天该干啥干啥,就是不要和邻居们谈论狗的事儿,呵呵。等到第n天晚上看是否有枪响。如果那天晚上枪不响,就该轮到自己第二天下手了。

这题很有意思。在主人们看来信息不对称,但局外人看得出信息不对称的环特征。所以,主人们就要利用这种环特征和自己的信息来作出决定。有意思的就是这种决定还具有数学归纳法的特点。面试时如果能当场拿下这道题目,其人对认识该问题初期混乱思路的整理,头脑的清醒程度,都当真令人钦佩。

posted on 2009-11-05 23:16  中道学友  阅读(2378)  评论(0编辑  收藏  举报

导航

技术追求准确,态度积极向上