来自牛客,解答链接是B站的https://www.bilibili.com/video/av27732823/?vd_source=5aa3e82c498eb8177f6f0eb69b1cbf0a
但是没想明白答案应该是多少
病狗问题 一个住宅区内有100户人家,每户人家养一条狗,每天傍晚大家都在同一个地方遛狗。已知这些狗中有一部分病狗,由于某种原因,狗的主人无法判断自己的狗是否是病狗,却能够分辨其他的狗是否有病,现在,上级传来通知,要求住户处决这些病狗,并且不允许指认他人的狗是病狗(就是只能判断自己的),过了7天之后,所有的病狗都被处决了,问,一共有几只病狗?为什么?
来自AI:
假设有 n 只病狗。
第一天:如果有一只病狗,病狗的主人看到其他 99 只狗都是好狗,那么他会立刻知道自己的狗是病狗,第一天就会把病狗处决掉;如果有两只病狗,病狗的主人会看到一只病狗,由于不确定自己的狗是否有病,所以第一天都不会处决狗;如果有三只或更多病狗同理第一天也不会有行动。
第二天:如果有两只病狗,第一天过后病狗主人看到的病狗数为 1,但是第一天没有听到处决病狗的枪声,所以病狗主人会知道除了看到的那只病狗外,自己的狗也是病狗,所以第二天会处决自己的狗;如果有三只病狗,病狗主人看到的病狗数为 2,他们会觉得如果只有两只病狗的话第二天应该会有处决枪声,但是没有,所以他们会继续观望;如果有更多病狗同理第二天也不会有行动。
第三天:如果有三只病狗,病狗主人看到的病狗数为 2,前两天没有处决枪声,第三天他们就会知道自己的狗也是病狗,所以会处决;如果有四只或更多病狗同理第三天也不会有行动。
……
以此类推,第七天所有病狗被处决,说明有 7 只病狗。
因为病狗主人看到的病狗数为 n - 1,第一天没听到枪声,他会想如果只有一只病狗第一天就会有枪声,第一天没枪声说明至少有两只病狗;第二天没枪声说明至少有三只病狗……直到第七天有枪声说明有七只病狗,因为每个病狗主人都这么想,所以当有七只病狗时,第七天所有病狗会被处决。
看看uoj#76
来自AI:
这个问题是一个经典的逻辑推理问题,通常被称为“疯狗问题”或“病狗问题”。我们可以通过推理来解决这个问题。
假设有n 只病狗。每只狗的主人都能看到其他狗的状态,但不能判断自己狗的状态。根据题意,所有的狗在第七天都被处决了。
推理过程:
如果只有 1 只病狗:
这只病狗的主人看到其他 99 只狗都是健康的,因此他会在第一天意识到自己的狗是病狗,并在第一天处决它。
如果有 2 只病狗:
每只病狗的主人看到另一只病狗,认为可能是自己狗是健康的。第一天没有狗被处决,因为每只病狗的主人都在等待。
到了第二天,看到其他狗没有被处决,两个病狗的主人都意识到自己的狗也是病狗,因此在第二天处决它们。
如果有 3 只病狗:
每只病狗的主人看到另外两只病狗,认为可能是自己狗是健康的。第一天没有狗被处决。
第二天,看到其他两只病狗的主人没有处决他们的狗,第三只病狗的主人意识到自己的狗也是病狗,因此在第三天处决它们。
以此类推:
如果有
n
n 只病狗,所有的病狗的主人都会在第
n
n 天处决他们的狗。
结论:
根据这个推理过程,如果在第七天所有的病狗都被处决,那么可以推断出一共有 7 只病狗。因为每只病狗的主人都在等待前面的狗被处决,最终在第七天,所有的病狗的主人都意识到自己的狗是病狗并处决它们。