IBM 公司向来以高素质人才作为企业持续竞争力的保证。进入 IBM 公司是差不多每个 IT 人的梦想,偶然
看到这条 IBM 公司的面试题,给大家试试看,看看是否具备进入 IBM 的实力!
村子中有 50 个人,每人有一条狗。在这 50 条狗中有病狗(这种病不会传染)。于是人们就要找出病
狗。每个人可以观察其他的 49 条狗,以判断它们是否生病,只有自己的狗不能看。观察后得到的结果不
得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗,而且每个人只有权
利枪毙自己的狗,没有权利打死其他人的狗。第一天,第二天都没有枪响。到了第三天传来一阵枪声,问
有几条病狗,如何推算得出?
第一种推论:
A、假设有 1 条病狗,病狗的主人会看到其他狗都没有病,那么就知道自己的狗有病,所以第一天晚上
就会有枪响。因为没有枪响,说明病狗数大于 1。
B、假设有 2 条病狗,病狗的主人会看到有 1 条病狗,因为第一天没有听到枪响,是病狗数大于 1,所
以病狗的主人会知道自己的狗是病狗,因而第二天会有枪响。既然第二天也每有枪响,说明病狗数大于2。
由此推理,如果第三天枪响,则有3条病狗。
第二种推论
1 如果为 1,第一天那条狗必死,因为狗主人没看到病狗,但病狗存在。
2 若为 2,令病狗主人为 a,b。 a 看到一条病狗,b 也看到一条病狗,但 a 看到 b 的病狗没死故知狗
数不为 1,而其他人没病狗,所以自己的狗必为病狗,故开枪;而 b 的想法与 a 一样,故也开枪。
由此,为 2 时,第一天看后 2 条狗必死。
3 若为 3 条,令狗主人为 a,b,c。 a 第一天看到 2 条病狗,若 a 设自己的不是病狗,由推理 2,第
二天看时,那 2 条狗没死,故狗数肯定不是 2,而其他人没病狗,所以自己的狗必为病狗,故开枪;而 b
和 c 的想法与 a 一样,故也开枪。
由此,为 3 时,第二天看后 3 条狗必死。
4 若为 4 条,令狗主人为 a,b,c,d。a 第一天看到 3 条病狗,若 a 设自己的不是病狗,由推理 3,
第三天看时,那 3 条狗没死,故狗数肯定不是 3,而其他人没病狗,所以自己的狗必为病狗,故开枪;而
b 和 c,d 的想法与 a 一样,故也开枪。
由此,为 4 时,第三天看后 4 条狗必死。
5 余下即为递推了,由年 n-1 推出 n。
答案:n 为 4。第四天看时,狗已死了,但是在第三天死的,故答案是 3 条