一个村子里一共30户人家,每家每户都养了1条狗。每户人家都可以查看其他人家的狗是不是病狗,但是不准检查自己家的狗是不是病狗。当这些人如果推断出自家的狗是病狗的话,就必须自己把自家的狗枪毙了但是每个人在看到别人家的狗是病狗的时候不准告诉别人,也没有权利枪毙别人家的狗,只有权利枪毙自家的狗。第一天没有听到枪声,第二天也没有,第三天却传来了一阵枪声。请问:这个村子里一共有几条病狗,请说明理由?补充:所有的人都知道村子里至少一条病狗。2015-8-12现在终于理解了,不过这道题目很限定思维吧。1.所有人都会去查看一遍其他人的狗,而且是每天查看一遍。2.所有的狗是第一天就生病了?而不是之后每天逐个生病(传染导致)。3.这道题根据现实“每个人都会侥幸认为自己的狗是健康的”却又不现实的“每个人都怀疑自己狗是生病的”,而且也忽略了传染,之后病狗逐步增加。原谅本人第一次看到题目会有一种想法:`这些狗是逐天生病的`。。。。
2 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
3条。这个题还有个条件没有说明:所有的人都知道村子里至少一条病狗。假如有1条病狗,第一天30个人都出来看其他人家的狗,病狗的主人会发现其它29条狗都是健康的,那么他知道自己的狗是病狗,所以当天就杀了。假如有2条病狗,第一天30个人都出来看其他人家的狗,两条病狗的主人会发现29条狗中有1条病狗,但是他们不知道总数有多少病狗,所以当天它们没法判断自己的狗是否是病狗,因此当天没有枪声。第二天,病狗之一的主人发现没人开枪,他马上会知道他所看到的病狗的那个主人也看到了1条病狗,然而自己在29条狗中只看到了一条,那么自己的那条狗也必是病狗,于是第二天两个病狗的主人都会回去杀死自己的狗。假如有3条病狗,第一天30个人都出来看其他人家的狗,3条病狗的主人会分别发现29条狗中有2条病狗,但是他们不知道总数有多少病狗,他们会暂认为自己的狗不是病狗。那么他会以第二条理论分析,应该在第二天结束那2条病狗的主人会杀掉他们的狗,由于三个人都会这么想,所以第二天没有人开枪。所以第二天结束,病狗的主人意识到还有一条病狗的存在且是自己的,因此第三天三条病狗的主人会分别向自己的狗开枪。。以此类推,假如有n条病狗,则枪声会在第n天响起。代码://javascriptfunctionhowManySickDogsIfGunsFiredAtDay(n){returnn;}
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
这个应该属于一类题:科学归纳法(没记错的话应该是)假设30人的村子里只有一只病狗,主人为A,其他人看到A的狗是病狗,但不知道自己的狗是不是病狗,所以其他人暂时不会枪毙自己的狗,而A发现其他人的狗都是好狗,在知道最少有一只病狗的情况下,他肯定能猜到自己的狗是病狗,所以,在第一天的时候,就会枪毙自己的狗,也就是第一天一声枪响。假设30的村子里只有两只病狗,主人为A,B,除了他们之外的村名,发现了他们的两只病狗,但不知道自己的狗是不是病狗,所以其他人暂时不会枪毙自己的狗,。现在A在第一天发现,其他人的狗只有一只是病狗,他没法判断自己的狗是不是病狗;同样,B也是;就这样第一天过去了,没有枪响,第二天,A发现B的病狗依然活着,他就瞬间明白了自己的狗是病狗,于是会枪毙自己的狗,同样,B也是一样,所以,第二天,两声枪响。假设。。。。所以,这个规律基本满足N只病狗,第N天N声枪响补充:两只病狗的情况,A发现B的狗还活着,会发现自己的狗是病狗的原因是,如果自己(A)的狗不是病狗,那么B看到的其他狗就是好狗,但是最少有一只病狗,所以B自己会知道自己的狗是病狗,同理,A也是一样。
添加回答
举报
0/150
提交
取消