病狗问题

Q:有一个村庄有n户人家,每户人家养了一条狗。
有一天,村民接到通知,村庄内有病狗。于是大家都把狗带给别的村民观察。已知每户居民都可以观察到其他居民的狗,并准确判断哪些狗是病狗,但是却不能正确判断自己家的狗是否得病。但是,村民之间相互无法沟通。这些村民如果断定自家的狗是病狗,就会在当天开枪将其击毙。每户村民都是极其聪明的。到了第k天,村庄里响起枪声。请问有多少条狗被击毙?

A:最怕这种奇怪的智力题了orz。。。

其实这种题可以这么想:从那几只病狗主人的角度想
设有一条病狗:
第一天所有的村民牵着狗上街,病狗主人发现其他人家的狗没有病狗。于是确定自己家的狗是病狗。于是第一天晚上把狗杀掉。
设有两条病狗:
设病狗的主人是A和B。第一天所有村民牵狗上街,A和B都看见对方的病狗,以为自己的没病。所以第一天并没有枪声。第二天A又发现了B的病狗。如果自己的狗没病那么B本应该发现B自己狗说病狗并且前一天晚上就应该杀掉的,这说明B也看见了一只病狗,于是A明白了自己的狗也是病狗。B同理。于是第二天晚上A和B都杀了自己的狗。
设有三条病狗:
设病狗主人是A、B、C。第一天病狗主人都看见其他人家的两条病狗,以为自己的没病。第二天A又看见了两条病狗,以为是只有两条病狗,并且B和C当天回去后会杀掉各自的病狗的。然而第三天A又看见了那两条病狗。于是A明白了真相。B、C同理。于是第三天晚上ABC各自杀掉了自己的病狗。

依此类推。。。若第k天响起枪声,说明有k条病狗。结果与n是无关的。
原文地址:https://www.cnblogs.com/pdev/p/4474538.html