• 50人,50条狗


    50只狗中有病狗(病不会传染)。于是人们就要找出病狗。每人可以观察其他49条够,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不得交流,也不能通知并狗主人。
      主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且只每个人有权利枪毙自己的狗,没权利枪毙其他人的狗。第一天第二天都没有枪响,到第三天传来一阵枪声。
      请问有几只病狗?

     1)如果只有一只病狗(狗主人甲),第一天狗主人甲没看到其他人有病狗,得出自己的是病狗,第一天就会开枪枪毙病狗;其他人已经看到病狗,不能确定自己的狗有没有病,不会作出反应。
    2)如果只有两只病狗(狗主人是甲和乙),第一天狗主人甲看到乙的病狗,不能确定自己的狗有没有病,不会作出反应。乙也一样不反应,其他人也都看到2只病狗,也不会作出反应;
    第二天再看狗时,甲看到乙的病狗没死,他推理出乙第一天看到了别人病狗,而其他人都没病狗,那必须自己的是病狗,乙想法同甲,于是第二天看完狗后两人枪毙两狗,其他人第一天看到两只狗,第二天还是看到两只狗,他们知道甲乙要第二天才能推理出各自的病狗,所以他们也没反应。
    3)如果只有三只病狗(狗主人是甲,乙,丙),第一天甲、乙、丙各看到两只病狗,不能判断总共有三只还是两只病狗,他们想如果是两只,那么第二天就会有人做出情况2的推理,但第二天也没枪响,所以到了第三天,他们就可以断定是3只病狗,那么除了他们看到的两只,就只有自己的那只也是病狗,所以第三天枪响了。
    依次类推,前面都没枪响,第k天枪响,就说明有k只病狗
  • 相关阅读:
    家长如何助力孩子适应小学生活
    一年级线上家长会
    gdb常用调试命令
    二叉树-后序遍历
    机器人
    Oracle创建只读账号的详细步骤
    ORACLE RAC日常运维-调整RAC+DG环境redo大小
    Redis 延迟分析
    oracle dataguard 重启步骤
    catalog start with + switch database to copy的妙用
  • 原文地址:https://www.cnblogs.com/daemonzd47/p/9057340.html
Copyright © 2020-2023  润新知