IBM公司的面试题

Aeoliao

贫穷贵公子
VIP
注册
2002-08-14
消息
6,436
荣誉分数
24
声望点数
0
村子中有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个人可以观察其他的49条狗,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。第一天,第二天都没有枪响。到了第三天传来一阵枪声,问有几条病狗,如何推算得出?

50个人里面没有傻子,50条狗里面必须有病狗
 
如果我不仅有权力枪毙我的狗,而且有权力枪毙出这道题的人,我可以保证,第一天就能让大家听到枪声.
 
最初由 Leo2004 发布
[B到了第三天传来一阵枪声,问有几条病狗,如何推算得出?
[/B]

一阵枪声?->1
 
如果只有一条狗,那狗的主人在第一天观察后一定立刻枪毙它。
如果有两条狗,设为主人A 和 B。A 看到B的是病狗,但是不能确定自己的是不是,所以他只能等。B也一样在等。同时A和B都互相知道对方在这样想,所以一定有第二条病狗,也就是自己的狗。所以如果只有两条,第二天就应该响枪。
如果有3条狗,.....自己推断,我觉得答案是3条
 
首先要考虑的是人的水平。比如明明一条狗是有病的,你却看不出来。或者看起来好好的,其实有病。所以首先要确定的是:有兽医吗?
 
老掉牙的题了。不过有意思的是最开始这是微软的题,传着传着变成IBM的题了。
 
还有这样的历史啊。我倒是第一看见,有点孤陋寡闻。
 
明明一个人一天可以办完的事,却要50个人3天来完成, 还说没有傻子.
 
一共是3只,理由如下:

1. 首先一定有病狗。 n>= 1.
2. 如果只有一只,那么有一个人会看到49只好狗,第一天就会打死他的狗。因此一定是大于1
  n >1。
3. 如果 n =2, 有两个人看到的是1只病狗,其余看到的是2只,那么看到一只狗的人第二天就会开枪
。可是没有人开,说明 n >2.
4. 第三天有人开枪了,说明有3人看到了两只,判断自己的是。
 
显然是有什么原因让50个人都无法作出判断:所有的狗看起来都一样。当你看到49条一样的狗时,你会想,只是我的狗有病吗?难道不会是我的狗是好的,而其它49条都是有病的?其他49人也这么想。所以第一天没动静,第二天也无法作出判断。第三天,终于有人明白全是一样的狗,联想到必然有病狗,于是得出50条都有病的结论。于是开枪打自己的狗。其他人顿时明白,也把自己的狗杀了。
 
后退
顶部