病狗问题

来源:互联网 发布:linux使用排行榜 编辑:程序博客网 时间:2024/04/29 18:47
村子中有50个人,每人有一条狗,每天傍晚大家都在同一个地方遛狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个人可以观察其他的49条狗,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。第一天,第二天都没有枪响。到了第三天村子没病狗了,问有几条病狗?

题目分析:
  1,村中一定有病狗(存在性)
  2,村民都很聪明(必要性)
  3,村民看得出哪只狗是病狗
  4,一天看一次其他人的狗,不能看自己的狗,不能交流
  5,推算病狗

题目解答:
  1,如果只有一只病狗,病狗的主人是甲,第一天甲没看到其他人有病狗,得出自己的狗是病狗,第一天就会枪毙掉自己家的狗;其他人看到甲的狗是病狗,认为自己的狗没病,不作反应。因此如果只有一只病狗,第一天就会有一声枪声。
  
       2,如果有两只病狗,病狗的主人分别是甲和乙,第一天甲看到乙的狗是病狗,以为自己的狗没病,乙看到甲的狗病狗,也以为自己的狗没病,其他人看到甲乙的狗是病狗,也以为自己的狗没病,第一天均不作反应;第二天再看狗时,甲看到乙的病狗没死,他得出乙第一天看到了别人家的狗是病狗,而其他人都没病狗,得出自己和乙的狗是病狗,乙想法同甲,于是第二天看完狗后两人枪毙掉自家的狗,其他人没反应。 因此如果只有两只病狗,第一天不会有枪声,第二天有两声枪声。

  3,如果有三只病狗,推理同上,得出第三天枪毙3条病狗。
 
原创粉丝点击