提示:本文共有 951 个字,阅读大概需要 2 分钟。
小编之前发布了一篇《农夫与牛》的逻辑思维题,现在给大家解析一下。
题目:
村庄中出现了患病的牛,每家每户都只有一头牛,一共有100头,其中至少有一头牛患病了,为了找出患病的牛,村长每天召集大家开会,开会中,每个农夫都知道其他任何一家的牛患病的情况,但是不知道自己的是否患病,然后,会议结束后,每家回到家里,根据开会的结果推测自己家的牛是否患病,如果确认患病,就由自己宰杀,然后再下一天开会的时候,村长会通报前一天的宰杀情况,直到全部患病的牛都被宰杀,那么,假如在第8天的时候,全部患病的牛,都被宰杀完成,那么请问,一共有多少头牛患病了。
解析:
这个算法中,牛的全部数量100实际上是没有多大用处,我们首先要关注的一个点是至少有一头牛患病,并且每次开会的时候,能知道其他家牛的患病情况,而不知道自己家牛的患病情况。
好了,基于上边的情况,我们假设一下,假如只有一头牛患病,而且是小编家的,那么在第一天开会的时候,除了小编,其他的人看到的是只有一头牛患病了,而小编则看到的是其他家没有牛患病,而我们知道至少有一头牛患病了,那么小编就会推测出小编家的牛患病了,然后开完会以后,小编就把牛宰了,在第二天的时候,其他人发现昨天患病的牛被宰了,就可以判断自己家的牛没有患病了,这是为什么呢,我们继续推测一下,假如,有两头牛患病了,分别是A家和B家,在第一天开会的时候,A和B看到的是只有一头牛患病,而其他人则是看到两头牛患病,这个时候,A和B是不能确定自己家的牛是否患病的,也就是说第一天是没有牛被宰的,那么在第二天的时候,A和B发现,仍然是有一头牛患病,那么A和B就能确定自己家的牛也患病了。
以此类推,我们可以得出这样的一个推论,假如村里一共有N头牛患病了,A家的牛就是其中之一,而B家的牛则没有患病,每次开会的时候,A都会看到有N-1头牛患病了,而B则会看到有N头牛患病了,问题最关键的点来了,如果A家的牛没有患病,从A的角度来看,在第N天开会的时候,牛就应该被全部宰杀完了,然而,到达第N天的时候,A仍然会发现有N-1头牛患病,那么A就可以判断自己家的牛也患病了,接着在N+1天的时候,B会发现患病的牛的数量变成0了,那么B自己可以判断自己家的牛没有患病了。
问题比较绕,理解关键的点以后,就比较容易理解该算法问题了。
看到此处说明本文对你还是有帮助的,关于“思维逻辑 农夫与牛 问题分析”留言是大家的经验之谈相信也会对你有益,推荐继续阅读下面的相关内容,与本文相关度极高!