这是五年级鹏程杯的真题,原题如下:
一个村子有50 户人家,每户养 1 条狗,村子里一定存在疯狗。规则如下:1、每个人只能观察其余 49 条狗,绝对看不到自己家的狗;2、观察结果严禁互相交流、不能提醒别人;3、所有人绝顶聪明、严格守规,一旦百分百推理出自家狗是疯狗,必须在当天晚上开枪打死自家的狗;已知:第一天晚上无枪声,第二天晚上依旧无枪声,第三天晚上响起枪声。请问:村里一共有几只疯狗?推理过程:
步骤 1:假设只有 1 只疯狗(N=1)
疯狗主人观察另外 49 条狗,发现全部正常。结合 “村里必有疯狗” 的前提,主人第一天就能确定:自家狗一定是疯狗,第一天必然枪响。题目第一天无枪声,直接证明:疯狗数量>1。
步骤 2:假设有 2 只疯狗(N=2)
两只疯狗的主人,各自外出都只能看到1 只疯狗。他们都会心里推理:如果全村只有 1 只疯狗,那对方第一天一定会开枪。等到第一天结束,没有枪声,两人立刻明白:疯狗不止 1 只,自己看到的那只之外,自家的狗必然也是疯狗。按照规则,两人会在第二天晚上同时开枪。题目第二天依旧没有枪声,证明:疯狗数量>2。
步骤 3:假设有 3 只疯狗(N=3)
三位疯狗主人,每人外出都只能看见2 只疯狗。每个人都会预判:如果只有 2 只疯狗,那两个疯狗主人第二天一定会开枪。等到第二天全程安静无枪响,三人瞬间推理出:疯狗不止 2 只,自己家的狗就是第三只疯狗,于是第三天一起开枪,完全吻合题干条件。
结论定理:有N只疯狗,枪声会在第N天响起
最终答案:村子里一共有 3 只疯狗。
变式 1:第一天枪响 → 1 只疯狗;第二天枪响 → 2 只;第n天枪响,就是n只疯狗;
变式 2:人数可以改成 10 户、20 户,总数不影响逻辑,只看枪响的天数;
抽象能力:将现实问题转化为数学模型,再用代码具象化 。
逻辑推理:编程中的条件判断、循环结构与数学中的演绎推理、归纳法高度一致 。
精确性:两者均要求严密的逻辑闭环,任何细微的逻辑漏洞都会导致系统失效或证明错误
文章来源:
四季读书网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至23467321@qq.com举报,一经查实,本站将立刻删除;如已特别标注为本站原创文章的,转载时请以链接形式注明文章出处,谢谢!