zoukankan      html  css  js  c++  java
  • 病狗问题

    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是无关的。
  • 相关阅读:
    203. Remove Linked List Elements
    python练习小程序
    五十音练习小软件
    CocosCreator生命游戏
    一个swift下载程序
    用excel做一幅像素画
    翻译一篇SpiderMonkey GC的文章
    unity-3d拼图游戏
    NDK编译Python2.7.5
    git命令简图
  • 原文地址:https://www.cnblogs.com/pdev/p/4474538.html
Copyright © 2011-2022 走看看