不是我写的,baidu了一下,不过思路很清楚的,很容易看懂
有的时候直接搜索下得到结果的效率可能会更高些
要回答这个问题,一般人肯定会想到,1号必须先让另外两个人同意,所以,他可以自己得到32颗,而给2号3号各34颗。但只要仔细想想,就会发现不可能, 2号和3号有积极性让1号死,以便自己得到更多。所以,1号无奈之下,可能只有自己得0,而给2和3各50颗。但事实证明,这种做法依然不可行。为什么呢? 因为我们要先看4号和5号的反应才行。很显然,如果最后只剩下4和5,这无论4提出怎样的方案,5号都会坚决反对。即使4号提出自己要0,而把100颗钻石都给5,5也不会答应――因为5号愿意看到4号死掉。这样,5号最后顺利得到100颗钻石——因此,4的方案绝对无法获得半数以上通过,如果轮到4号分配,4号只有死,只有死! 由此可见,4号绝对不会允许自己来分。他注定是一个弱者中的弱者,他必须同意3号的任何方案!或者1号2号的合理方案。可见,如果1号2号死掉了,轮到3号分,3号可以说:我自己100颗,4号5号0颗,同意的请举手!这时候,4号为了不死,只好举手,而5号暴跳如雷地反对,但是没有用。因为3个人里面有2个人同意啊,通过率66.7%,大于50%! 由此可见,当轮到3号分配的时候,他自己100颗,4和5都是0。因此,4和5不会允许轮到3来分。如果2号能够给4和5一些利益,他们是会同意的。 比如2的分配方案是:98,0,1,1,那么,3的反对无效。4和5都能得到1,比3号来分配的时候只能得到0要好得多,所以他们不得不同意。 由此看来,2号的最大利益是98。1号要收买2号,是不可能的。在这种情况下,1号可以给4号和5号每人2颗,自己收买他们。这样,2号和3号反对是无效的。因此,1号的一种分配方案是:96,0,0,2,2。 这是不是最佳方案呢?再想一想,1号也可以不给4号和5号各2个,而只需要1个就搞定了3号,因为如果轮到2号来分配,2号是可以不给3号的,3号的得益只有0。所以,能得到1个,3号也该很满意了。所以,最后的解应该是:97,0,1,2,0。 好,再倒推。假设1号提出了97,0,1,0,2的方案,1号自己赞成。2和4反对。3∶2,关键就在于3号和5号会不会反对。假设3号反对,杀掉1号,2号来分配,3自己只能得到0。显然,3号不划算,他不会反对。如果5号反对,轮到2号、3号、4号来分配,5号自己最多只能得到1。 所以,3号和5号与其各得到0和1,还不如现在的1和2。 正确的答案应该是:1号分配,依次是:97,0,1,0,2; 或者是:97,0,1,2,0。

解决方案 »

  1.   

    请登陆 http://blog.csdn.net/mqboss/ 上面有对java面试问题的专门的整理和解答
      

  2.   

    这好象是博弈论里的题目啊,前提应该是纯理性人假设,以前见过类似的题目。
    ownraul(想要个公孙月的人偶......) 太强了,分析得很正确,运用倒推的方法找出了每个人可能获得的最大收益!思路清晰啊!
    LZ把分都给他吧!!
      

  3.   

    很明显,这个题目有个bug,就是在哪里结束
    应该说只要找到一个方法,就执行,而不是执行每个人的方法
    不然,到底执行哪一个人的方法?大家在谋利的前提是要活下来,按照提方法执行就成了泡影
    或者,只能每个人的意见一样,各分得1/5
      

  4.   

    写个程序 执行一下试试看中国JavaEE技术交流社区-欢迎您的参与探讨!
    -- 打造“中国JavaEE技术交流社区“,欢迎j2ee爱好者朋友们的踊跃参与!
    http://www.j2eedve.com/
    本社区即将提供J2EE基础视频教程,项目开发视频教程!敬请期待!
    http://www.j2eedve.com/