IBM面試題 (轉載)

        村子中有50個人,每人有一條狗。在這50條狗中有病狗(這種病不會傳染)。於是人們就要找出病狗。每個人可以觀察其他的49條狗,以判斷它們是否生病,只有自己的狗不能看。觀察後得到的結果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要槍斃自己的狗,而且每個人只有權利槍斃自己的狗,沒有權利打死其他人的狗。第一天,第二天都沒有槍響。到了第三天傳來一陣槍聲,問有幾條病狗,如何推算得出? 

    第一種推論:   

    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條

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=65744 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章