西西河

主题:推理题(有点难) -- 老朱

共:💬26 🌺10 新:
全看树展主题 · 分页首页 上页
/ 2
下页 末页
家园 具体细节

记不清了。不过是在<Heard On the Street>上看到的。

家园 答案

在下不想卖关子,赶紧给出答案各位。

河里确实牛人不少,所以很有几个人给出了正确答案,特别是物格修齐君,还给出了推理过程,我自己反正想破大天也没想出来,所以把窃来的答案写下来:

从一条病狗的情况算:如果村里有一条病狗,那么有病狗的人看来,所有其他的人的狗都是好狗,根据村里至少有一条病狗的条件,他可以判断自己的狗是病狗,所以第一天他就会杀狗。

两条病狗的情况下,有病狗的人看到除自己外还有一个病狗,这样第一天晚上,他无从判断自己的狗是不是病狗,但是第二天他看到那条病狗的主人没有杀狗,根据条件“所有人都是推理的高手,而且他们了解对方也一定是推理的高手”,那么那个人就可以判断“对方也一定看到了病狗才没有将对方自己的狗杀死”,但是他看到除了自己和对方之外没有其他病狗,于是可以判断自己的狗是病狗。这样两人都可以互相作出这样的判断,于是,第二天杀狗。

三条病狗的情况下,同理,一个病狗的主人看到前两天都没有人杀狗,必然判断出来“除了自己看到的两条病狗之外还有第三条病狗”,从而知道自己的狗是病狗。这样就会在第三天杀狗。

正确答案:三条病狗。

答案
家园 这条如何得出?

有病狗的人看到除自己外还有一个病狗,这样第一天晚上,他无从判断自己的狗是不是病狗

其实我觉得这条最关键了,但是题目里头没有给出。

家园 换句话说

当41个人都告诉这两个人你们的狗有病,他们还仅仅因为双方的狗看起来都有病所以没杀?

家园 解释

因为题目中给出了”如果确定自己的狗是有病的,那这个人会在晚上将自己的狗枪杀。否则就没有行动。”所以我们可知,在无法判断自己的狗是不是病狗的时候,主人的选择是等待。

家园 解释2

这个问题中,任何人之间是不能交流的,所有的判断都是基于个人对其他人的狗的观察,和推理得来的。

解释
家园 确定的意思是什么?

假设有三条,主人是ABC,那么ABC在第一天就已经被另外42个人告知自己的狗是病狗

或者说实际上这个村里头的人是不说话的?也就是没有人告诉自己自己的狗会不会有病?

家园 明白了

多谢,这样就解释通顺鸟~~

家园 著名的微软面试题

这个就是网上流传了很久很久的一道微软面试题的变种,原题是一个村里的女人如何对付不忠的丈夫。

家园 第几天杀狗,就有几条病狗

假设1 只有1条病狗,有病狗的人没有看到病狗,因此确定自己的狗有病,当场杀之。其他人看到1条,因此确定,病狗数大于等于1,不能确定自己的狗是否有病,看到有人杀狗,可以确定病狗只有1条。判断结束。

假设2 只有2条病狗,有病狗的人各看到1条病狗,因此确定,1<=病狗数<=2,,不能确定自己的狗是否有病,第一天没有人杀狗。第2天看到第1天没有人杀狗,那么假设1不满足,可以确定病狗有2条,杀自己的狗。其他人看到2条,因此确定,病狗数大于等于2,但是不能确定自己的狗是否有病,看到有人杀狗,可以确定病狗只有2条。判断结束。

假设3 只有3条病狗,有病狗的人各看到2条病狗,因此确定,2<=病狗数<=3,,不能确定自己的狗是否有病,第1天没有人杀狗,排除假设1,第2天没有杀狗,那么假设2不满足,可以确定病狗有3条。其他人看到3条,因此确定,病狗数大于等于3,但是不能确定自己的狗是否有病,看到有人杀狗,可以确定病狗只有3条。判断结束。

假设n 只有n条病狗,有病狗的人各看到n-1条病狗,因此确定,n-1<=病狗数<=n,不能确定自己的狗是否有病,第1天没有人杀狗,排除假设1,第2天没有杀狗,那么假设2不满足,...,n-1天还没有人杀狗,排除假设n-1,可以确定病狗有n条。因此第n天杀狗。其他人看到n条,因此确定,病狗数大于等于n,因此不能确定自己的狗是否有病,看到有人杀狗,可以确定病狗只有n条。判断结束。

结论,第几天杀狗,就有几条病狗

家园 递归法的典型例子

大学时候做过,但不是疯狗,另外一个情节,不过43这个数字没变,为什么一定要43?

第1天,如果某人看到别人的42条狗都是好狗,由于至少有一条病狗,他可以判断自己的狗就是病狗,基于它的理性,它会把自己的狗kill。第一天没有出现此种情况,说明“某人看到42条好狗”的情况不存在,好狗数量<42。

同理,第二天,如果某人....41条好狗,.....好狗数量<41。

...

第42天,....好狗数量<1。all dogs killed,天下无狗

全看树展主题 · 分页首页 上页
/ 2
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河