Java教程

有 50 家人家,每家一条狗。有一天警察通知, 50 条狗当中有病狗,行为和正常狗不一样。每人只能通过观察别 人家的狗来判断自己家的狗是否生病,而不能看自己家的狗,如果判断出自己家的狗病了,就必须当天

本文主要是介绍有 50 家人家,每家一条狗。有一天警察通知, 50 条狗当中有病狗,行为和正常狗不一样。每人只能通过观察别 人家的狗来判断自己家的狗是否生病,而不能看自己家的狗,如果判断出自己家的狗病了,就必须当天,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在这里插入图片描述

文章目录

  • 题目
  • 一、题目获得的条件
  • 二、假设法解决题目
    • 1.举例子
    • 2.深入理解
  • 总结


题目

有 50 家人家,每家一条狗。有一天警察通知, 50 条狗当中有病狗,行为和正常狗不一样。每人只能通过观察别
人家的狗来判断自己家的狗是否生病,而不能看自己家的狗,如果判断出自己家的狗病了,就必须当天一枪打死自
己家的狗。结果,第一天没有枪声,第二天没有枪声,第三天开始一阵枪响,问:一共死了几条狗?


一、题目获得的条件

  • 1.病狗数量>=1并且<=50
  • 2.每个人每天只能观察其他的狗不能看见自己的狗
  • 3.枪声响起的条件当观察到的49条狗表现一样!!!那么他自然会认为自家的狗有问题
  • 4.天数增多说明病狗不只是1条(很重要)

二、假设法解决题目

1.举例子

  • 首先我们假设有一条病狗,
    那么第一天病狗的主人观察到49条表现一样的狗(正常狗,这里人并不知道正常与否),
    正常狗的主人观察到48条一样的狗(正常狗)和1条异样的狗(病狗)
    那么在这里正常狗的人判断不了自己家的狗是否是病狗,而病狗主人则会自然认为自己狗有问题,并且第一天开枪

  • 假设有两条病狗
    那么第一天病狗的主人观察到48条(正常狗)和1条狗(病狗),
    正常狗的主人观察到47条一样的狗(正常狗)和2条(病狗)
    很显然第一天谁都无法判断自己家狗是否有病,于是第一天没有枪声
    然而第二天的到来,会让50个人意识到病狗数量至少两条!!!
    此时病狗就会意识到有可能自己家的狗和那条异常的狗就是病狗于是枪声响起。

  • 假设有三条病狗
    那么第一天病狗的主人观察到47条(正常狗)和2条狗(病狗),
    正常狗的主人观察到46条一样的狗(正常狗)和3条(病狗)
    第二天,病狗数量至少为2条,但是病狗主人此时无法判断,没有枪响。
    第三天,病狗数量至少为3条,病狗主人意识到自己家狗是病狗,枪声响起

2.深入理解

或许你以为这个题目就这么解决了,但是还没有,或许你已经想到了这个问题,那就是这道题题解病狗的数量不一定非得是3条!!!
假设有49条病狗,那么病狗主人第一天看见的是49条表现一样的狗,自然会去开枪打死自己的正常狗,第一天枪响。
同理第二天枪响还可以是48条病狗
第三天枪响可以是47条病狗
**


总结

总之无论是三条病狗还是47条病狗,这个题的答案问的都是打死的狗的数量,答案都是3条

这篇关于有 50 家人家,每家一条狗。有一天警察通知, 50 条狗当中有病狗,行为和正常狗不一样。每人只能通过观察别 人家的狗来判断自己家的狗是否生病,而不能看自己家的狗,如果判断出自己家的狗病了,就必须当天的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!