注册 登录
编程论坛 C++教室

IBM招聘试题,大家来看看怎么做!

lsw111 发布于 2005-11-16 15:13, 2569 次点击
IBM招聘题
村子中有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个人可以观察其他的49条狗,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。第一天,第二天都没有枪响。到了第三天传来一阵枪声,问有几条病狗,如何推算得出?
30 回复
#2
青羽儿2005-11-16 16:03
第一种推论:

  ??A、假设有1条病狗,病狗的主人会看到其他狗都没有病,那么就知道自己的狗有病,所以第一天晚上就会有枪响。因为没有枪响,说明病狗数大于1。

  ??B、假设有2条病狗,病狗的主人会看到有1条病狗,因为第一天没有听到枪响,是病狗数大于1,所以病狗的主人会知道自己的狗是病狗,因而第二天会有枪响。既然第二天也每有枪响,说明病狗数大于2。

  由此推理,如果第三天枪响,则有3条病狗。

  第二种推论

  ??1如果为1,第一天那条狗必死,因为狗主人没看到病狗,但病狗存在。

  ??2若为2,令病狗主人为a,b。a看到一条病狗,b也看到一条病狗,但a看到b的病狗没死故知狗数不为1,而其他人没病狗,所以自己的狗必为病狗,故开枪;而b的想法与a一样,故也开枪。

  由此,为2时,第一天看后2条狗必死。

  ??3若为3条,令狗主人为a,b,c。a第一天看到2条病狗,若a设自己的不是病狗,由推理2,第二天看时,那2条狗没死,故狗数肯定不是2,而其他人没病狗,所以自己的狗必为病狗,故开枪;而b和c的想法与a一样,故也开枪。

  由此,为3时,第二天看后3条狗必死。

  ??4若为4条,令狗主人为a,b,c,d。a第一天看到3条病狗,若a设自己的不是病狗,由推理3,第三天看时,那3条狗没死,故狗数肯定不是3,而其他人没病狗,所以自己的狗必为病狗,故开枪;而b和c,d的想法与a一样,故也开枪。

  由此,为4时,第三天看后4条狗必死。

  ??5余下即为递推了,由年n-1推出n。

  ??答案:n为4。第四天看时,狗已死了,但是在第三天死的,故答案是3条
#3
lsw1112005-11-17 08:09
lihai
#4
ElfDN2005-11-17 10:40
1推1。。。。
#5
zfl01092005-11-18 01:39
真厉害啊,是不是都要这么聪明才可以有工作啊?要是的话我完了
#6
volcanor2005-11-18 10:08
我看不懂,是不是说的 在详细点?
#7
zinking2005-11-18 17:04
这其实是数学里的难题了!
早就看到这题了,但也一直没去找正确答案,搂主了了我的心愿
#8
ADALE2005-11-18 17:10
青羽儿交我,QQ544736849,记住表明你是青羽儿,一定要交我,我刚学左2个月,什么都不太懂。
#9
nFox2005-11-20 14:11
        强~~
#10
whq80737842005-11-20 15:40
我觉得有问题 我认为无论是有几条病狗,枪声都会出现在第一天
比如说:假设为1条:第一天发现 主人将之枪毙,第一天有枪声, 因为就一个 一目了然 一眼就看出来了.
再假设为2条:同样也可以是第一天出现枪声 非病狗的主人看见是2条病狗,病狗的主人看见的是1条,所以当天病狗的主人也可以看出来是自己的狗有问题 而将它枪毙.
3条也是一样:病狗的主人看见的是2条病狗而非病狗的主人看见的是3条病狗,所以在第一天也可以有枪声
所以""无论是几天狗都不能拿第几天有枪声来判断有几天病狗""

看的出来回答这个问题的人是懂得这个题目的本意的 所以我相信他的答案没有问题.

问题应该出现在问题本身.也就是出题的人出的有问题~!~!
#11
zhai26511732005-11-20 15:54
ding
#12
snln2005-11-21 17:44
有点看懂了!
#13
volte2005-11-21 21:45

题目不错,以前做过
不过是上数学课 上

#14
yangxingjian2005-11-21 21:51
whq8073784说的不正确,第一天没有狗被枪毙是因为狗的数量大于一,所以病狗的主人也看见了病狗。因为不可以交流所以他不会认为自己的狗为病狗(只有健康狗的主人才会看见大于或等于2的病狗);第二天没有狗是是应为病狗的主人看见了不止一条病狗,第三天因为没有狗被枪毙,自己又看见了两条病狗所以可以推测出又三条病狗,而其中一条是自己的。
#15
tianykun2005-11-23 16:37
不去IBM工作哦。刚来入门学C++啊。不用搞那么难的题目吧??
#16
雨之神2005-11-23 22:28
还是不太理解
#17
君子2005-11-23 22:56

555还是不懂....

#18
柳儿2005-11-24 09:07
看懂第一种推论了,青羽儿 的第二种推论,感觉乱乱的,越看越糊涂。
#19
SAEBA_RYO2007-06-20 08:06
我认为在做这道题的时候,首先需要明确以下两点:
首先:题目中的第1天,第2天的提法,实际上它的作用仅仅是提供了几个“决断点”(比如:第1天和第2天之间有个分割时间点),过了这个点,表示每个主人都完成了一次判断。
其次:每个主人都是一样聪明的,而且都足够聪明。

在明确了这两点之后我是这样分析的:

假设只有1只病狗。病狗主人看不到其它的病狗,所以显然自己的狗就是病狗。这种情况下不需要看其他主人的反应,“决断点”也不需要设在第1天和第2天的交接点,看完之后马上可以做出决断。第一天就可解决了问题。所以不可能是1只。

假 设只有两只病狗。那么病狗主人都看到1只病狗。这种情况下,只能根据对方的表现来判断,所以必须要有一个“决断点”。过了第1个决断点,也就是到了题目中 所谓的第2天对方做了判断后为什么没把自己狗处理掉呢,肯定是看到了有其他的病狗存在。而从双方除了看到对方的病狗外,看不到其它的了。所以只可能自己的 狗是病狗了。所以在第2天就可判断出了。

假设有3只,这样任何一个病狗的主人都看到两只病狗,这样其中的一位就会观望另两位主人的表现, 看过了第1个“决断点”后(第2天)他们两个会不会把狗杀死,如果没杀死,说明他们肯定看到了除他们对方的病狗外另外的病狗,那也只可能是自己的狗是病狗 了。而直到第2个“决断点”来临,枪声都没有响起。于是过了第2个“决断点”(第3天),枪声就会响起。

所以答案就是3只。而且最终会响起的也应该是3声枪响,到最后病狗的主人都是能确定自己的狗是病狗的,只不过其中一位老兄动作快点,抢到了个沙发。

其 实真实情况根本不用费这么长时间,在看过狗之后,既然主人都很聪明,看到另外两方在过了足可做出判断的一段时间后没开枪把狗杀掉,就立刻就可判断出了。所以其实这个题目中“第几天”的提法真 的不怎么样,迷惑人,说到底只是“第几个步骤”而已。

[此贴子已经被作者于2007-6-22 13:28:23编辑过]

#20
孤魂居士2007-06-20 11:57
么信心了``打击人
#21
slowlybear2007-06-21 02:36

学习了,虽然我也不明白,不过EXP增加了,呵呵.有高人在的地方就是好哇

#22
tobyliying2007-06-21 10:54
这个题在微软面试中也有过.
 这题是3只
#23
jiaju1112007-06-21 12:28
题目应该加几个字就完整了,红色的字

村子中有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个人可以观察其他的49条狗,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要在当天晚上枪毙自己的狗,而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。第一天,第二天晚上都没有枪响。到了第三天晚上传来一阵枪声,问有几条病狗,如何推算得出?
#24
herbert_19872007-06-22 10:51
不错.
#25
SAEBA_RYO2007-06-22 12:47
回复:(jiaju111)题目应该加几个字就完整了,红色的...
你加上这几个字是可以的,但我认为,你只要加了“当天”两字就可以了。加上“晚上”当然没问题,但要说明的是实际上如果在第2天或是第3天枪要响的话,肯定是早早就响的,可以说是“一过了前一天”就可立刻得出结论的。
#26
SAEBA_RYO2007-06-22 13:18
回复:(whq8073784)我觉得有问题 我认为无论是有几...
我不知道你是不是真的理解了,因为不知道你说枪会在第1天响起是否是“默认了任意一病狗主人在做某次判断时可获知其他病狗主人是否已完成前一次的判断”。感觉
你更像还是没弄明白,因为你说“非病狗的主人看到?条”,而非病狗的主人看到几条是不会对判断起到任何作用的(因为他们是不能相互交流的)。

[此贴子已经被作者于2007-6-23 1:53:03编辑过]


#27
little_stone2007-06-22 14:56
有一点要明确,无论几个病狗,第一天都不会开枪的.
#28
ichigo2007-06-22 18:02
为什么感觉编程序就要先做数学题
#29
SAEBA_RYO2007-06-23 02:07
回复:(little_stone)有一点要明确,无论几个病狗,第...
1条的时候,就可在第1天开枪。看完之后马上可以判断出的。

而且在“默认了某一个病狗主人在作判断时可获知其他病狗是否完成了前一次判断”的情况下即使有多条狗也完全可以在第一天解决问题。


#30
jinzhong6202007-06-23 09:51
我认为IBM出题的本意不是这个,应该考的是我们头脑简单明了吗?
不是要我们想这么复杂。按照这个原理来推理是这样的,而换个角度考虑就是了
#31
jinzhong6202007-06-23 10:02
    其实这个题目就是测试在座回答问题的各位的 A计算了3<X的这类人属于第一类,相信科学可以解释一切。其实并不是这样。这类人往往有才华但不得到领导的重视
B得出50条都是狗的是现实主义者,这类人往往要求加薪会比别人多点。因为别人加了薪就认为自己也应该加薪。
C得出没有狗死,放空枪的朋友我很佩服,因为只有浪漫主义才会这样想,他们遇到问题时可能不会解决问题而是饶过问题去寻找不同的答案
1