磨剑(2)病狗

tags: iq

——————— 好几年前写的东西了,朝花夕拾。

问题

一个住宅区内有100户人家,每户人家养一条狗,每天傍晚大家都在同一个地方遛狗。已知这些狗中有一部分病狗,由于某种原因,狗的主人无法判断自己的狗是否是病狗,却能够分辨其他的狗是否有病,现在,上级传来通知,要求住户处决这些病狗,并且不允许指认他人的狗是病狗(就是只能判断自己的),过了7 天之后,所有的病狗都被处决了,问,一共有几只病狗?为什么?

解答

首先,想明白一个问题,狗的主人怎么判断自己的狗是病狗?
很简单,假设狗的主人去溜狗的时候,发现其它所有人的狗都是健康的。那自己的狗肯定是病狗了,回家弄死。
这是只有一只病狗的情况,如果有两只呢?
假设A的狗是病狗但自己不知道,去遛狗时,发现B的狗是病狗,其它所有人的狗都健康。但他不知道自己的狗是不是病狗,所以第二天A会继续去遛狗,结果发现B还带着那只病狗。
A就想,为什么这只病狗没被弄死?莫非B不知道这是病狗?为什么B不知道自己的狗是病狗呢?一定是他看见别人带了一只病狗,以为上级通知说的是别人!那个别人会是谁呢?A忽然明白了,就是自己啊!
A看能看出除了B的狗,其它狗都健康,如果还有另一只病狗,那肯定就是自己的狗了!
于是,A回家弄死了自己的狗。
最关键的一点,是要明白,所有病狗主人的想法和做法都应该是对称的。B也同A的心里活动一样,他第一天就看见A带着病狗出来,第二天又看见了,他也会想到自己的狗和A的狗都是病狗。
于是两天后,两只病狗都已经被处决。
三只狗呢?一样的,ABC有病狗,第一天遛狗,发现了另两人的狗都是病狗,其它狗都健康。但、都不知道自己的狗有病,第二天会继续去遛。结果ABC都会发现另两人还带着病狗。A就想,BC不笨,如果只有两条病狗的话,BC一定推断出它们是病狗,弄死之,明天BC就不会来遛狗了,唉,节哀。同样的,BC也会一样的想法啦。结果到了第三天,大家还是在如常的遛狗……A就明白了,BC除了看见对方的狗是病狗外,一定看见了第三只病狗,那只能是自己的狗了。
以此类推,如果大家到了第N天才明白过来,说明有N只病狗。

当然了,这个故事的前提是,遛狗的都是聪明人,并且听上级的命令……