曾经看到这道面试题,虽然不曾参加这样的面试,但是总会被这样的题目吸引。以前看到这题时候不知什么意思,今天中午午休的时候重新想了,至少现在能根据自己的思路解出来,而用到的方法竟然是我只看了一课的博弈论所学到的东西。苦逼的程序猿什么时候才能放下书本......闲话不说,题目重复如下:
五位绝顶聪明、勇敢、理智、果断干练的女海盗抢得100枚金币后,讨论如何进行公正分配。他们商定的分配原则是:
(1)抽签确定各人的分配顺序号码(1,2,3,4,5);
(2)由抽到1号签的女海盗提出分配方案,然后5人进行表决,如果方案得到超过半数的人同意,就按照他的方案进行分配,否则就将1号扔进大海喂鲨鱼
(3)如果1号被扔进大海,则由2号提出分配方案,然后由剩余的4人进行表决,当且仅当超过半数的人同意时,才会按照他的提案进行分配,否则也将被扔入大海;
(4)依此类推。这里假设每一个女海盗都是绝顶聪明而理性,他们都能够进行严密的逻辑推理,并能很理智的判断自身的得失,即能够在保住性命的前提下得到最多的金币。
同时还假设每一轮表决后的结果都能顺利得到执行,那么抽到1号的海盗应该提出怎样的分配方案才能使自己既不被扔进海里,又可以得到更多的金币呢?
我的思路仅仅一张表格(
X代表假设这个人被扔进海里
):
海盗 1 2 3 4 5
X X X 0 100 (因为必须超过半人,所以4一定拿不到甚至可能被丢下海)
X X 99 1
0 (因为3如果死了,那么4一个拿不到,所以3分给4一个,以最小代价获得了4的支持的得到票数超过50%)
X 97 0 2 1 (2号必须以最小代价获得两位支持,那么必须在3号能给出的条件略好,那么最好的方式给4,5号各加1个金币)
97 0 1 0 2 (同理,1号必须在与2能给出的条件以最小代价获得两位的支持,那么最小呆家是在3的基础上给3,5号各加1这样支持率超过50%)