一道笔试题
村子中有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。每个人可以观察其他的49条狗,以判断它们是否生病(如果有病一定能看出来),只是自己的狗不能看。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗(发现后必须在一天内枪毙),而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。
第一天大家全看完了,但枪没有响,第二天仍没有枪响。到了第三天传来一阵枪声,问村里共有几条病狗,如何推算得出?
采用逆推法和排除法,是算法类题目 :curse: 枪响过后,“天下无狗” --~~ 答案是三条,就用排除法 回复 6# 朴朴
村民们事前知道有几条病狗吗?
如果知道的话,不是第一天都能听到枪响,如果不知道,那又是怎么得出这个结论的? 知道有病狗,但是不知道几条。
如果只有一条,那么病狗主人马上知道是自己的,第一天就枪响了。
如果有两条病狗,分别是属于a,b的,第一天a看到一条病狗,枪不会响;第二天,a看到那一条病狗还在,那么a可以马上推断出50条狗里面,病狗的数量不是一条,也不是三条,因此只能是两条....两条病狗,他看到一条,那么还剩的一条就肯定是自己的,因此枪响,b的推断过程和a相同。
第三天枪响的推断过程同上。 汗···楼上的有理!! 楼上说的有点道理
页:
[1]