病狗的问题——逻辑推理
村子里有50个人,每个人都有一只狗。这50只狗中有病狗(疾病不传染)。所以人们必须找到病狗。大家都可以观察其他49只狗来判断是否生病,只有自己的狗不行。观察后得到的结果不得传达,也不得告知病犬的主人。主人一旦搞清楚自己家是病狗,就会射杀自己的狗,每个人都只有射杀自己狗的权利,而没有杀死别人家狗的权利。第一天,第二天,没有枪声。第三天,传来一阵枪声,问有几只病狗。
第一个推论:
1.假设有1只病狗,病狗的主人会看到其他狗都没病,所以知道自己的狗病了,所以第一天晚上会有枪响。因为没有枪响,说明病狗数量大于1。
2.假设有两只病狗,病狗的主人会看到有1只病狗。因为第一天没有枪响,说明病狗数量大于1,所以病狗的主人会知道自己的狗是病狗,所以第二天会有枪响。由于第二天没有枪声,所以病狗数量大于2只。由此,如果第三天枪响了,就有三只病狗。
第二个推论:
1.如果有1条病狗,第一天狗就死了,因为狗主人没有看到病狗,但是病狗是存在的。
2.如果有两只病狗,狗主人是A和B..甲看到了一只病狗,乙也看到了一只病狗,但是甲看到乙的病狗没有死,所以他知道狗的数量不是1,而别人没有病狗,那么他的狗一定是病狗,所以他开枪了;而b和a想的一样,所以也出手了。所以,2点钟,第一天过后,两条狗就死了。
3.如果有3只病狗,狗的主人分别是A、b、c,A第一天看到两只病狗。如果A假设自己的狗不是病狗,第二天看的时候推断两只狗都没有死,那么狗的数量肯定不是2,其他人都不是病狗,那么自己的狗一定是病狗,于是开枪;而b和c的想法和a一样,所以也出手了。所以,3点钟,第二天就死了三只狗。
4.剩下的就是递归了,从n-1推导出n。答案:n是4。第四天,狗死了,但是第三天,所以答案是三。