西西河

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

共:💬26 🌺10 新:
分页树展主题 · 全看首页 上页
/ 2
下页 末页
  • 家园 推理题(有点难)

    闲来没有事儿,我给大家出道题。这题可不是一般的难,您要是能够完全自己把答案想出来,那您就不是人。(是什么您自己琢磨吧。)这个题也不是我想出来的,那是我们寝室滕大哥告诉我的,小的在这里不敢盗版。下面我就来说题目吧:

    一个小村子,这个小村和外界是完全封闭的,是一个孤立的系统。(有没有点灵异村的感觉?)村里有43个人,村子里面的每一个人都养了一条狗,有一天,村里的狗得了狂犬病。于是村里的人商量,要把得病的狗找出来杀掉,以免伤人。为了鉴别狗是否得病,村里的人每天傍晚都会在广场上集会,所有的人带着自己的狗围成一个大圈。条件是这样的:

    1、所有的人都能看出来别人的狗是否得病,唯独看不出来自己的狗是否得病。

    2、村里的所有人都是理性的,而且是推理的专家,他们的推理都是有逻辑的。

    3、所有的人都了解村里的其他人也都是理性的,而且是推理的专家。

    4、傍晚在广场上集合之后,如果确定自己的狗是有病的,那这个人会在晚上将自己的狗枪杀。否则就没有行动。所有人只能杀自己的狗,不能杀别人的狗。这些天里,人与人之间也不能有任何交流。

    5、结果,第一天集会之后,没有人杀狗,第二天也没有,到了第三天,村子里响起了几声枪响,所有的病狗都被杀死了,而且没有病的狗也没有被误杀。

    6、(加一条)村里至少有一只狗得了病。病在这几天里不会传染。

    请问:1、到底有几条有病的狗?2、你能给出你推理的过程么?

    答案在以后给出。

    • 家园 递归法的典型例子

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

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

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

      ...

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

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

      假设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条。判断结束。

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

    • 家园 著名的微软面试题

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

    • 家园 答案

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

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

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

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

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

      正确答案:三条病狗。

      • 答案
        家园 这条如何得出?

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

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

        • 家园 解释

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

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

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

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

        • 家园 换句话说

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

          • 家园 解释2

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

    • 家园 三只?(附推理)

      推理过程如下:

      1。如果只有一条狗有病,此狗主人看见所有其他狗没病,会确定自己狗有病,当晚杀之而后快。

      第一天没事,大家都知道病狗数大于1。

      2。如果两只狗有病,第一天无事。第二天任一病狗主人看见只有一条病狗,由于知道病狗数大于1,确定自己狗有病,杀之。

      第二天没事,大家都知道病狗数大于2。

      3。如果三只狗有病,第一,二天无事。第三天任一病狗主人看见只有两条病狗,由于知道病狗数大于2,确定自己狗有病,杀之。

      故此有三只病狗。

    • 家园 43

      我的推理是,43个人,他们都按照同样的规则进行推理,那么结果必定相同。所以43个人,在第三天必定做出同样的行为(杀或不杀)已知至少有一条狗有病,已知没杀错,那么必定是43人一起开枪。

      • 43
        家园 您认为出题人在脑筋急转弯呐?简单一驳,

        理性的考虑是不会错杀狗狗的。

        例子,2人,2狗,其中1病狗。第一天,必一人杀狗,理由如下:病狗的主人看到另一人的狗没病,必然知道自己的狗有病,因为有病狗存在,故必杀之。而另一人看到病狗,当天无从判断,第二天知道病狗被杀,必知自己的狗无病。

        推之,43条狗中,至少有两条狗有病,因为第一天没有人杀狗。

        推之,如果只有一条狗有病,则第一条必有人杀狗,因为它的主人看到的都是好狗。

        如果有两条病狗,当第一天没有人杀狗,则说明有两条病狗,而第二天,两条狗的主人会杀狗,因为其中任一位都看到其它的只有一条病狗。

        故,几天开始杀狗,就有几条病狗。

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


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

Copyright © cchere 西西河