[绝对挑战]IBM面试题(附答案)

村子里有50个人,每个人有一条狗。这50条狗中有病狗(这种病不会传染),于是人们就要找出病狗。每个人都可以观察其他的49条狗,以判断他们是否生病,只有自己的狗不能看。观察后的结果不能交流,也不能通知病狗的主人。主人一旦推算出自己的狗是病狗,就要枪毙自己的狗。而且每个人只有权力枪毙自己的狗,没有权力处理别人的狗。第一天,第二天都没有枪响。到了第三天传来一阵枪声。问有几条病狗,如何推算得出?

 

 

 

 

 

 

 

 

 

答案:

A.假设有1条病狗,病狗的主人会看到其他狗都没有病,那么就知道自己的狗有病,所以第一天晚上就会有枪响。因为没有枪响,说明病狗数大于1

B.假设有2条病狗,病狗的主人会看到有一条病狗,因为第一天没有听到枪响,使病狗数大于1,所以病狗的主人会知道自己的狗是病狗,因而第二天会有枪响。既然第二天也没有枪响,说明病狗数大于2

有此推理,如果第三天枪响,则有3条病狗。

总结:

问题不在于答案到底是什么,而在于我们如何求解。

初遇问题我们可能会感觉一片茫然,不知无从下手,这是最差的情况。

其实面对不知何解的问题,我们不妨采取笨点的办法。不就是50条狗吗?我就是一条一条的假设,然后得出矛盾,排除,又能怎样呢?即便是采取如此笨的办法,也比光看着发呆强。而且,你看到了,有时候还很管用。

碰到问题,不要不敢下手。愣着发呆,或许才是真正的问题。

 

你可能感兴趣的:(程序人生)