1. 程式人生 > >一道很有意思的思維題

一道很有意思的思維題

題目要求如下:

       有20個主人,20條狗,在同一個小區每天在同一地方同時遛狗,狗主人絕對聰明,可以直接發現別人家的狗是否是瘋狗,但是不能直接發現自家的狗是否是瘋狗。狗主人一旦推斷出自家的狗是瘋狗,晚上回家之後便會用槍把狗打死。第一天大家晚上遛狗回家之後沒有槍聲響起,第二天晚上大家遛狗回家之後沒有槍聲響起,第三天大家晚上遛狗回家之後多聲槍聲響起,請問有多少條瘋狗?

        條件:1.所有狗主人遛狗期間不會有任何交談,暗示誰家狗是瘋狗等等。

                  2.瘋狗不會傳染。




具體思路如下:

一.這個題目如果告訴了所有狗主人,他們之間一定有瘋狗的情況下:

1.有一條瘋狗:

    假設甲的狗為瘋狗,其餘人的狗為好狗。第一天甲會看到其他人的狗都是好狗,其他人看到甲狗是瘋狗,剩下的每個人都會有這樣的想法,除了自己和甲,還剩下的人看到的都是好狗。第一天晚上甲槍斃自己狗,一聲槍響。到了第二天,除了甲,剩下的人都能確定除了甲的狗是瘋狗,剩下的人每個人的狗都是好狗。

2.有兩條瘋狗

    假設甲,乙的狗為瘋狗。第一天,甲和乙都只能看到一條瘋狗,其餘狗為好狗。除了甲乙,其他人都看到了兩條瘋狗。第一天晚上沒有槍聲,到了第二天,甲會覺得如果只有一條瘋狗的話,第一天晚上乙就會槍斃自己的狗,但是第一天晚上沒有槍聲,甲可以推斷出乙還看到了一條瘋狗,而自己和乙看其他玩家的狗都是好狗,乙看到的這條瘋狗正是甲自己的狗,因此甲確定自己的狗是瘋狗,乙同甲一樣確定自己的狗為瘋狗,於是第二天晚上兩個人同時槍斃自己的狗。兩聲槍響。

 3.有三條瘋狗

    假設甲,乙,丙三人的狗為瘋狗。第一天,甲乙丙都只能看到兩隻瘋狗,其餘人看到三條狗。由於大家都不確定自己狗是不是瘋狗,因此第一天晚上沒有槍響。甲覺得他看到的乙丙狗為瘋狗,乙丙肯定也看到了兩個人互相的狗為瘋狗,而且甲很任性的覺得自己的狗為好狗,因此甲想:除了乙丙他倆其餘人的狗(包括甲自己的)都是好狗,那麼乙丙可以推斷出他倆的狗都是瘋狗,今晚就會互相槍斃自己的狗。乙丙想法如同甲。除開甲乙丙剩下的人由於看到三隻瘋狗,不確定自己的狗是否是瘋狗,今晚不會槍斃自己的狗。由於很可惜甲的願望是美好的,乙丙不只看到了對方得狗是瘋狗,還看到了甲的狗 是瘋狗,因此乙丙不會槍斃自己的狗,到了第三天,甲一看,窩巢,昨晚居然沒有槍聲,糟了,那麼乙丙各自看到了一隻瘋狗,而是看到了兩隻,另一隻瘋狗就是自己的狗,於是第三天晚上甲就槍斃了自己狗,同時乙丙跟甲的想法是一樣的的,也各自槍斃了自己狗,於是第三晚有三聲槍響。  注:為什麼乙和丙會和甲的想法一樣。因為只有甲乙丙他們三個人看到了兩隻瘋狗,其他人看到了三隻瘋狗。


 二.這個題目如果沒有告訴了所有狗主人,他們之間不知道有沒有瘋狗的情況下:

先做這樣的假設:

1.沒有瘋狗,大家的狗都是好狗:

        第一天每個人看到對方的狗都是好狗,每個人都有這樣的想法:其他人看到的狗除了自己的狗都是好狗,自己的狗好壞不確定。所以大家永遠都不會槍斃自己的狗。第一天永遠不會有槍聲響起。

2.有一隻瘋狗:

     待續。。。。