UPS智力类笔试题和面试题答案目

来源:解志愿时间:

  有5 名囚犯,编号1~5,让他们按照编号到装有100 颗豆子的袋子里摸豆子,每 人都不知道别人摸的数目,但自己摸的时候知道袋子里剩下多少,摸得最多和最少的会 死,跟别人一样多的两个都会死,每个人都保证自己不死的前提下让别人尽量多的人去 死,问编号多少的人存活概率最大?

  显然,为了避免成为受害者,对第n 个人(n>=3)而言,他的最佳策略就是取前面 所有人取的豆数的平均值。先来看看n=3,即第3 个人的情况。在他之前,1 号和2 号 已经摸过了,分别记为A 和B,以下用逻辑表达式的形式来描述3 号所取的豆数C。 C = (A + B) /2 //3 号的初始策略,取前两个人的平均值

  if (A + B + C) > 100 //1 号和2 号加起来取走了超过67 个

  {C = 100 - (A + B + 1 + 1)

  if C == 1

  return 0 //1 号和2 号共取走了97 个,3、4、5 号认命

  else

  return 1 //3 号安全。C 必定小于A、B 中的一个,并且必定大于D、E} else

  {if A<> B

  {if C == int(C) //整除

  {return 1 //3 号安全。C 必定位于A、B 二者之间} else

  {C = int(C)

  if abs(A - B) == 1 //1 号、2 号所取的数只相差1 个

  return 2 //此时C = min(A,B),因此肯定已经不可能是最多的。后面的4 号、5 号理 论

  上还有可能犯错误,3 号还存在一线存活的机会

  }

  else

  return 1 //3 号安全。C 必定位于A、B 二者之间

  }

  else

  {

  return 2 //此时C =A = B。后面的4 号、5 号理论上还有可能犯错误,3 号还存在一 线存活的机会

  }

  }

  上面这段程序完全可以扩展到n>3 的情况,最后我们会发现虽然理论上3 号比较有 利,实际上1 号根本不会给后面的人设计他的机会。所以唯一合理的结果应该是A = B =

  C = D=E = 20,也就是全都死翘翘。 当然,以上推理有一个重要的假定,即“很聪明”的定义如下:“如果无论如何我都会 出局,则多一个垫背的比少一个好。”

中国点击率最高的一篇文章 !