海盗分赃

来源:互联网 发布:厄米特矩阵是啥 编辑:程序博客网 时间:2024/04/29 21:43

海盗分赃问题:

有这样一道关于5个海盗如何分赃的问题,说是5个海盗抢到了100颗宝石,每一颗都有一样的大小和一样贵重的价。

 抽签决定自己的号码(1、2、3、4、5),首先,由1号提出分配方案,然后大家表决,当且仅当超过半数的人同意时,按照他的方案进行分配,否则将被扔进大海喂鲨鱼。如果1号死后,再由2号提出分配方案,然后剩下的4人进行表决,当且仅当超过半数的人同意时,按照他的方案进行分配,否则将被扔入大海喂鲨鱼 依此类推 条件:每个海盗都是很聪明的人,都能很理智地做出判断,从而做出选择。 问题:第一个海盗提出怎样的分配方案才能使自己的收益最大化?为什么?

 

网上有分析的。但那是海盗数量为5的情况,如果为10呢?你还能这样一个个分析吗?而且我们是学计算机的,应当用计算机的思维来解决问题。

第一反应肯定是可以用递归的。

假设F(n)表示有n个人时第一个人最多能得到的宝石数目,这里还是取100颗宝石来看。那F(1)=100, F(2) = -1,注意-1表示不仅拿不到任何宝石,还会丢掉性命。

所以现在我们先看看F(3),F(3)只要给F(2)=0,自己就可以拿到100,所以F(3)=100(此时另两人分别是0和0).F(4)的话最少的两个人都拿到0,我只要给一个人1颗宝石他就会同意,再加上自己肯定同意,那方案就能通过了,所以F(4)=99,另外3人分别(0,1,0或者0,0,1)。

所以当我们解决掉 F(n-1)的时候,我们应当怎么计算F(n)呢?

思路应当是这样:

排序 n-1个人拿到的最多宝石数,然后找出拿的最少的那一半,每个人给他们多分1颗!这样他们比之前情况拿的更多,肯定同意咯!人数也够了,方案肯定通过。

原创粉丝点击