朴朴 发表于 2010-5-10 23:54:48

一道笔试题

村子中有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。
每个人可以观察其他的49条狗,以判断它们是否生病(如果有病一定能看出来),只是自己的狗不能看。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗(发现后必须在一天内枪毙),而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。
第一天大家全看完了,但枪没有响,第二天仍没有枪响。到了第三天传来一阵枪声,问村里共有几条病狗,如何推算得出?


采用逆推法和排除法,是算法类题目

bookpig 发表于 2010-5-11 13:29:38

:curse:

xiao8206 发表于 2010-5-11 18:14:55

思博网络 发表于 2010-5-12 09:15:34

枪响过后,“天下无狗”

尔可小兀 发表于 2010-5-12 13:21:58

--~~

朴朴 发表于 2010-5-13 13:00:49

答案是三条,就用排除法

林原静羽 发表于 2010-5-15 10:35:20

回复 6# 朴朴


    村民们事前知道有几条病狗吗?
如果知道的话,不是第一天都能听到枪响,如果不知道,那又是怎么得出这个结论的?

朴朴 发表于 2010-5-15 12:13:43

知道有病狗,但是不知道几条。
如果只有一条,那么病狗主人马上知道是自己的,第一天就枪响了。
如果有两条病狗,分别是属于a,b的,第一天a看到一条病狗,枪不会响;第二天,a看到那一条病狗还在,那么a可以马上推断出50条狗里面,病狗的数量不是一条,也不是三条,因此只能是两条....两条病狗,他看到一条,那么还剩的一条就肯定是自己的,因此枪响,b的推断过程和a相同。
第三天枪响的推断过程同上。

lizz 发表于 2010-5-17 14:48:35

汗···楼上的有理!!

baoleiaabb 发表于 2010-7-12 20:59:48

楼上说的有点道理
页: [1]
查看完整版本: 一道笔试题