海盗分金币

合集下载

(完整word版)经典的博弈论分析案例——“海盗分金”问题

(完整word版)经典的博弈论分析案例——“海盗分金”问题

经典的博弈论分析案例一一“海盗分金”问题5个海盗抢得100枚金币,他们按抽签的顺序依次提方案:首先由1号提出分配方案,然后5人表决,超过半数同意方案才被通过,否则他将被扔入大海喂鲨鱼,依此类推。

“海盗分金”其实是一个高度简化和抽象的模型,体现了博弈的思想。

在“海盗分金”模型中,任何“分配者”想让自己的方案获得通过的关键是事先考虑清楚“挑战者”的分配方案是什么,并用最小的代价获取最大收益,拉拢“挑战者”分配方案中最不得意的人们。

假设前提假定“每个海盗都是绝顶聪明且很理智”,那么“第一个海盗提出怎样的分配方案才能够使自己的收益最大化?” 推理过程从后向前推,如果1至3号强盗都喂了鲨鱼,只剩4号和5号的话,5号一定投反对票让4号喂鲨鱼,以独吞全部金币。

所以,4号惟有支持3号才能保命。

3号知道这一点,就会提出(100,0,0)的分配方案,对4号、5号一毛不拔而将全部金币归为已有,因为他知道4号一无所获但还是会投赞成票,再加上自己一票,他的方案即可通过。

不过,2号推知3号的方案,就会提出(98,0,1,1)的方案,即放弃3 号,而给予4号和5号各一枚金币。

由于该方案对于4号和5号来说比在3号分配时更为有利,他们将支持他而不希望他出局而由3号来分配。

这样,2号将拿走98枚金币。

同样,2号的方案也会被1号所洞悉,1号并将提出(97, 0,1, 2, 0)或(97, 0,1, 0,2)的方案,即放弃2号,而给3号一枚金币,同时给4号(或5号)2枚金币。

由于1号的这一方案对于3号和4号(或5号)来说,相比2号分配时更优,他们将投1号的赞成票,再加上1号自己的票,1号的方案可获通过,97枚金币可轻松落入囊中。

这无疑是1号能够获取最大收益的方案了!答案是:1号强盗分给3号1枚金币,分给4号或5号强盗2枚,自己独得97枚。

分配方案可写成(97, 0, 1, 2, 0)或(97, 0, 1, 0, 2)。

分析1号看起来最有可能喂鲨鱼,但他牢牢地把握住先发优势,结果不但消除了死亡威胁,还收益最大。

海盗分金博弈论的故事

海盗分金博弈论的故事

海盗分金博弈论的故事海盗分金--博弈论的故事(一)海盗分金5名海盗分100枚金币。

规则是大家抽签分出1-5号,并按顺序提方案。

1号首先提方案,5人表决,当超半数同意时有效;否则1号将被抛入大海。

然后,2号提方案,4人表决,评判方式同上。

以此类推。

假定每个人都很聪明,1号提出什么方案,能使自己收益最大?答案是:(97、0、1、0、2)或(97、0、1、2、0)。

推理:假定1-3号都抛入大海,那末4号也活不了,所以,4号必须保住3号。

据此,3号可提方案(100、0、0)。

2号推知3号方案,可提出(98、0、1、1)方案,来拉拢4号和5号。

1号推知2号方案,可推出上述方案,拉拢住3号,以及4号或5号中的1人。

(二)博弈论与博弈类型博弈(Game),本是游戏、竞赛的意思。

所要解决的核心问题是:参与博弈的其他人员会怎么做?我应采取怎样的对策来取得最佳效果?博弈的例子到处可见:讨价还价、划拳、小孩猜拳、下棋、打牌,以及"三十六计"、"田忌赛马"等。

博弈论作为一种理论,最先是由美国经济学家冯·诺伊曼在1937年提出来的,他与经济学家奥斯卡·摩根斯坦于1944年合著的《博弈论与经济行为》公认为博弈论诞生的标志。

今天,博弈论已为数学的一个较为完善的分支,并在许多领域被运用。

在经济学领域的影响被称为"现代经济学的一次大的革命"。

博弈类型:1.静态博弈与动态博弈。

前者指参与者同时行动、同时出牌或亮招,如招标、考试等;后者指参与者的行动有先后次序,如下棋、战争、商业竞争等。

2.完全信息博弈与不完全信息博弈。

前者指参与者互相都"知己知彼",否则就是后者。

3.零和博弈与非零和博弈。

前者指"你赢的就是我输的",如打麻将、下棋等;后者指大家的得失总和不为零,如势均力敌的战争会使两败俱伤,而商业合作会使"双赢"。

海盗分金

海盗分金

要解决这类问题,我们总是从最后的情形向前推,这样 我们就知道在最后这一步中什么是好的和坏的决定。然 后运用这个知识,我们就可以得到最后第二步应该作怎 样的决定,等等。要是直接就从开始入手解决问题,我 们就很容易被这样的问题挡住去路:“要是我作这样的 决定,下面一个海盗会怎么做?”
从后向前推,如果1至3号强盗都喂了鲨鱼,只剩4号和 5号的话,5号一定投反对票让4号喂鲨鱼,以独吞全部 金币。所以,4号惟有支持3号才能保命。
下的分赃制。
最可怕的是其他四人形成一个反1号的大联盟并制定出新规 则:四人平分金币,将1号扔进大海……这就是阿Q式的革命 理想:高举平均主义的旗帜,将富人扔进死亡深渊……
当然“海盗分金”的隐含假设是所有海盗的价值取向都是一 致的,理性的。而在现实生活背景下,海盗的价值取向并不都 一样,有些人的脾性是宁可同归于尽都不让你独占便宜,有些 人则只求安稳,不计较利益。
的不符,就会有人大闹……当大家都闹起来的时候,1号能拿
着97枚金币毫发无损、镇定自若地走出去吗?最大的可能就是,
海盗们会要求修改规则,然后重新分配。想一想二战前的希特
勒德国吧!
而假如由一次博弈变成重复博弈呢?比如,大家讲清楚下
次再得100枚金币时,先由2号海盗来分……然后是3号……这
颇有点像美国总统选举,轮流主政。说白了,其实是民主形式
3号知道这一点,就会提出“100,0,0”的分配方 案,对4号、5号一毛不拔而将全部金币归为已有,因 为他知道4号一无所获但还是会投赞成票,再加上自 己一票,他的方案即可通过。
不过,2号推知3号的方案,就会提出“98,0,1, 1”的方案,即放弃3号,而给予4号和5号各一枚金币。 由于该方案对于4号和5号来说比在3号分配时更为有 利,他们将支持他而不希望他出局而由3号来分配。 这样,2号将拿走98枚金币。

海盗分金博弈

海盗分金博弈

方案。
海盗分金策略:海盗们需要根据自己和其他海盗的等级、
02
人数、分配方案等因素,制定出最优的分配方案,以获得
最大的收益。
03
海盗分金博弈:海盗们需要在博弈过程中,根据其他海盗 的行为和决策,调整自己的策略,以实现最优的分配方案。
04
海盗分金策略的优化:海盗们可以通过合作、沟通等方式, 优化自己的策略,以实现更高的收益。
参与者角色
2019
船长:海盗的 头领,负责分
配金条
2021
旁观者:观察海 盗分金的过程,
不参与决策
01
02
海盗:参与分 金的主要角色,
有决策权
2020
03
04
船员:海盗的 成员,服从船
长的命令
2022
博弈目标
01
海盗分金:每个 海盗都希望获得 尽可能多的金币
02
公平分配:每个 海盗都希望分配
方案公平合理
博弈的结果取决于参与者 的策略选择,不同的策略 选择会导致不同的结果。
参与者需要根据对方的策 略选择来调整自己的策略, 以实现最优的结果。
博弈的结果分析可以帮助 我们更好地理解博弈论的 基本原理和应用场景。
博弈最优解
01
海盗分金博弈: 一种多人参与 的博弈游戏
02
博弈结果:参 与者根据策略 选择,获得不 同的收益
03
避免冲突:每个 海盗都希望避免 与其他海盗发生
冲突
04
生存优先:每个 海盗都希望在分 金过程中保证自
己的生存
2 博弈策略
海盗分金策略
海盗分金规则:海盗按照等级从高到低依次提出分配方案,
01
如果方案被半数以上海盗同意,则按照该方案分配;否则, 提出方案的海盗将被扔进大海,然后由下一位海盗提出新的

简单的博弈论—海盗分金

简单的博弈论—海盗分金

简单的博弈论—海盗分金经济学上有个“海盗分金”模型:是说5个海盗抢得100枚金币,他们按抽签的顺序依次提方案:首先由1号提出分配方案,然后5人表决,投票要超过半数同意方案才被通过,否则他将被扔入大海喂鲨鱼。

假设前提假定“每个海盗都是绝顶聪明且很理智”,那么“第一个海盗提出怎样的分配方案才能够使自己的收益最大化?”推理过程推理过程是这样的:从后向前推,如果1至3号强盗都喂了鲨鱼,只剩4号和5号的话,5号一定投反对票让4号喂鲨鱼,以独吞全部金币。

所以,4号惟有支持3号才能保命。

3号知道这一点,就会提出“100,0,0”的分配方案,对4号、5号一毛不拔而将全部金币归为已有,因为他知道4号一无所获但还是会投赞成票,再加上自己一票,他的方案即可通过。

不过,2号推知3号的方案,就会提出“98,0,1,1”的方案,即放弃3号,而给予4号和5号各一枚金币。

由于该方案对于4号和5号来说比在3号分配时更为有利,他们将支持他而不希望他出局而由3号来分配。

这样,2号将拿走98枚金币。

同样,2号的方案也会被1号所洞悉,1号并将提出(97,0,1,2,0)或(97,0,1,0,2)的方案,即放弃2号,而给3号一枚金币,同时给4号(或5号)2枚金币。

由于1号的这一方案对于3号和4号(或5号)来说,相比2号分配时更优,他们将投1号的赞成票,再加上1号自己的票,1号的方案可获通过,97枚金币可轻松落入囊中。

这无疑是1号能够获取最大收益的方案了!答案是:1号强盗分给3号1枚金币,分给4号或5号强盗2枚,自己独得97枚。

分配方案可写成(97,0,1,2,0)或(97,0,1,0,2)。

“海盗分金”其实是一个高度简化和抽象的模型,体现了博弈的思想。

在“海盗分金”模型中,任何“分配者”想让自己的方案获得通过的关键是事先考虑清楚“挑战者”的分配方案是什么,并用最小的代价获取最大收益,拉拢“挑战者”分配方案中最不得意的人们。

现实生活中也有类似的“海盗分金”的例子如在企业中的一把手,在搞内部人控制时,经常是抛开二号人物,而与会计和出纳们打得火热,就是因为公司里的小人物好收买。

海盗分金——精选推荐

海盗分金——精选推荐

海盗分⾦海盗分⾦的故事5个海盗抢到了100颗宝⽯,每⼀颗都⼀样的⼤⼩和价值连城。

他们决定这么分:1。

抽签决定⾃⼰的号码(1,2,3,4,5)2。

⾸先,由1号提出分配⽅案,然后⼤家5⼈进⾏表决,当且仅当半数和超过半数的⼈同意时,按照他的提案进⾏分配,否则将被扔⼊⼤海喂鲨鱼。

3。

如果1号死后,再由2号提出分配⽅案,然后⼤家4⼈进⾏表决,当且仅当半数和超过半数的⼈同意时,按照他的提案进⾏分配,否则将被扔⼊⼤海喂鲨鱼。

4。

依次类推......问题:第⼀个海盗提出怎样的分配⽅案才能够使⾃⼰的收益最⼤化条件:每个海盗都是很聪明的⼈,都能很理智的判断得失,从⽽做出选择。

⾃从⼏天前将“海盗分⾦”的问题贴出之后,已受到许多朋友的关注。

或许你已经有了正确的答案,或许你还在思考之中。

⽆论如何,在该题⽬的“假定”之下,答案总是可以得到的,但答案之后的思考,你想到了吗?标准答案是:1号海盗分给3号1枚⾦币,4号或5号海盗2枚,独得97枚。

分配⽅案可写成(97,0,1,2,0)或(97,0,1,0,2)。

推理过程是这样的:从后向前推,如果1-3号海盗都喂了鲨鱼,只剩4号和5号的话,5号⼀定投反对票让4号喂鲨鱼,以独吞全部⾦币。

所以,4号惟有⽀持3号才能保命。

3号知道这⼀点,就会提(100,0,0)的分配⽅案,对4号、5号⼀⽑不拔⽽将全部⾦币归为已有,因为他知道4号⼀⽆所获但还是会投赞成票,再加上⾃⼰⼀票他的⽅案即可通过。

不过,2号推知到3号的⽅案,就会提出(98,0,1,1)的⽅案,即放弃3号,⽽给予4号和5号各⼀枚⾦币。

由于该⽅案对于4号和5号来说⽐在3号分配时更为有利,他们将⽀持他⽽不希望他出局⽽由3号来分配。

这样,2号将拿⾛98枚⾦币。

不过, 2号的⽅案会被1号所洞悉,1号并将提出(97 ,0,1,2,0)或(97,0,1,0,2)的⽅案,即放弃2号,⽽给3号⼀枚⾦币,同时给4号(或5号)2枚⾦币。

由于1号的这⼀⽅案对于3号和4号(或5号)来说,相⽐2号分配时更优,他们将投1号的赞成票,再加上1号⾃⼰的票,1号的⽅案可获通过,97枚⾦币可轻松落⼊囊中。

史上最烧脑逻辑问题:海盗分金币问题。能看懂解析的都是天才!

史上最烧脑逻辑问题:海盗分金币问题。能看懂解析的都是天才!

史上最烧脑逻辑问题:海盗分金币问题。

能看懂解析的都是天才!不说废话,直接上题!海盗分金币问题:5个海盗抢得了100个金币,现对这100个金币进行分配。

分配规则如下:首先抽签决定分配顺序,然后1号海盗进行分配,剩余4个海盗对1号海盗的分配方案进行投票,如果达到半数投赞成票,则方案通过,否则,杀死1号海盗;继续由2号海盗提出分配方案,剩余3个海盗进行投票,规则同上,以此类推。

假设这5个海盗都是懂逻辑的天才,请问几号海盗分得最多?具体怎么分配才能达到利益最大化?这个问题按照常人的思维,太简单了,5个海盗,100个金币,平均每个人分20个就完事了。

但是对于5个都懂逻辑的海盗可不会这么想。

海盗的思维方式是这样的:1、保命最重要;2、在能够保命的前提下,尽量多分金币;3、在保证前两条的前提下,尽量杀死对方。

最终分配结果绝对超出你的想象!我们首先来解决第一个问题:抽签公平吗?如果在没有人作弊的前提下,抽签显然是最公平的方案,抽到几号签完全是个人运气,所以就不再纠结这个问题了,我们将讨论的重心放在分配的规则上。

直接考虑5个人的情况太复杂了,我们把问题简化一下,从最简单的情况入手。

(1)首先考虑2个海盗:此时1号海盗进行分配,2号海盗进行投票。

注意分配方案需要得到半数人的支持,而此时只有1个人拥有投票权,那么2号海盗就拥有1票否决权。

那么1号海盗应该怎么分配,2号才能同意呢?显然,平分的方案2号是肯定不可能同意的。

那有人会想到1号将所有金币都给2号,自己1个金币也不要。

那么这样分1号就能保命了吗?答案是否定的。

因为无论1号怎么分,2号都可以说不同意,然后就有资格杀死1号。

此时,100个金币仍然都是2号的,而且他还没有后顾之忧。

所以结论是:当只剩下2个海盗时,无论1号怎么分配,1号都是必死无疑!(2)接下来考虑3个海盗:此时1号海盗进行分配,2号和3号海盗进行投票。

此时有2个人拥有投票权,只需要争取到1个人同意就行了。

(完整word版)经典的博弈论分析案例——“海盗分金”问题

(完整word版)经典的博弈论分析案例——“海盗分金”问题

经典的博弈论分析案例——“海盗分金”问题5个海盗抢得100枚金币,他们按抽签的顺序依次提方案:首先由1号提出分配方案,然后5人表决,超过半数同意方案才被通过,否则他将被扔入大海喂鲨鱼,依此类推。

“海盗分金”其实是一个高度简化和抽象的模型,体现了博弈的思想。

在“海盗分金”模型中,任何“分配者”想让自己的方案获得通过的关键是事先考虑清楚“挑战者”的分配方案是什么,并用最小的代价获取最大收益,拉拢“挑战者”分配方案中最不得意的人们。

假设前提假定“每个海盗都是绝顶聪明且很理智”,那么“第一个海盗提出怎样的分配方案才能够使自己的收益最大化?”推理过程从后向前推,如果1至3号强盗都喂了鲨鱼,只剩4号和5号的话,5号一定投反对票让4号喂鲨鱼,以独吞全部金币。

所以,4号惟有支持3号才能保命。

3号知道这一点,就会提出(100,0,0)的分配方案,对4号、5号一毛不拔而将全部金币归为已有,因为他知道4号一无所获但还是会投赞成票,再加上自己一票,他的方案即可通过。

不过,2号推知3号的方案,就会提出(98,0,1,1)的方案,即放弃3号,而给予4号和5号各一枚金币。

由于该方案对于4号和5号来说比在3号分配时更为有利,他们将支持他而不希望他出局而由3号来分配。

这样,2号将拿走98枚金币。

同样,2号的方案也会被1号所洞悉,1号并将提出(97,0,1,2,0)或(97,0,1,0,2)的方案,即放弃2号,而给3号一枚金币,同时给4号(或5号)2枚金币。

由于1号的这一方案对于3号和4号(或5号)来说,相比2号分配时更优,他们将投1号的赞成票,再加上1号自己的票,1号的方案可获通过,97枚金币可轻松落入囊中。

这无疑是1号能够获取最大收益的方案了!答案是:1号强盗分给3号1枚金币,分给4号或5号强盗2枚,自己独得97枚。

分配方案可写成(97,0,1,2,0)或(97,0,1,0,2)。

分析1号看起来最有可能喂鲨鱼,但他牢牢地把握住先发优势,结果不但消除了死亡威胁,还收益最大。

实验7_海盗分金

实验7_海盗分金

实验七博弈论的应用一、博弈论海盗分金的故事5个海盗抢到了100个金币,每一颗都一样的大小和价值连城。

他们决定这么分:1。

抽签决定自己的号码(1,2,3,4,5)2。

首先,由1号提出分配方案,然后大家5人进行表决,当且仅当半数和超过半数的人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼。

3。

如果1号死后,再由2号提出分配方案,然后大家4人进行表决,当且仅当半数和超过半数的人同意时,按照他的提案进行分配,否则将被扔入大海喂鲨鱼。

4。

依次类推......问题:第一个海盗提出怎样的分配方案才能够使自己的收益最大化条件:每个海盗都是很聪明的人,如果前面的人提出的方案对自己没好处肯定会否决,如果好处比后面持续下去的方案好就投票。

二、实验题目1.给出5个海盗分配100个金币的算法、过程和分析。

2.改变一下规则,投票中方案必须得到超过50%的票数(只得到50%票数的方案的提出者也会被丢到海里去喂鱼),那么如何解决5个海盗分100枚金币的问题?3. 不改变规则,如果让100个海盗分100枚金币,会发生什么?4. 如果每个海盗都有1枚金币的储蓄,他可以把这枚金币用在分配方案中,如果他被丢到海里去喂鱼,那么他的储蓄将被并在要分配的金币堆中,这时候又怎样?三、实验要求1.该实验的课内学时是4个课时。

2.题目1、2必须完成,要给出过程和分析。

3.题目1、2在完成上述基本功能的前提下,有能力的同学可以完成题目3和4。

四、实验说明1.互相之间可以进行算法的讨论,但文档以及程序每个人必须独立完成,如果发现雷同,则重做。

2.认真准备,实验前做好准备工作,准备工作包括完成实验报告中的(1)~(5)的部分,实验报告中(6)~(7)部分在实验结束后继续填写。

3.程序要上机调试成功并形成可执行的程序,记录调试过程中出现的错误现象以及如果改正4.程序的运行结果要结合程序测试数据进行分析。

5.提交实验报告(实验报告的格式见附录B)和源程序以及可以运行的程序。

经典推理题目:海盗分金问题

经典推理题目:海盗分金问题

经典推理题目:海盗分金问题经典推理题目:海盗分金问题有10个强盗A~J,得到100个金币,决定分掉,分法怪异:首先A提出分法,B~J表决,如果不过半数同意,就砍掉A的头。

然后由B来分,C~J表决,如果不过半数同意,就砍掉B的头。

依次类推,如果假设强盗都足够聪明,在不被砍掉头的同时获得最多的金币。

问:最后结果如何(精确结果)。

分析与解答所有的海盗都乐于看到他们的一位同伙被扔进海里,不过,如果让他们选择的话,他们还是宁可得到一笔现金。

他们当然也不愿意自己被扔到海里。

所有的海盗都是有理性的,而且知道其他的海盗也是有理性的。

此外,没有两名海盗是同等厉害的——这些海盗按照完全由上到下的等级排好了座次,并且每个人都清楚自己和其他所有人的等级。

这些金块不能再分,也不允许几名海盗共有金块,因为任何海盗都不相信他的同伙会遵守关于共享金块的安排。

这是一伙每个人都只为自己打算的海盗。

最凶的一名海盗应当提出什么样的分配方案才能使他获得最多的金子呢?为方便起见,我们按照这些海盗的怯懦程度来给他们编号。

最怯懦的海盗为1号海盗,次怯懦的海盗为2号海盗,依次类推。

这样最厉害的海盗就应当得到最大的编号,而方案的提出就将倒过来从上至下地进行。

分析所有这类策略游戏的奥妙就在于应当从结尾出发倒推回去。

游戏结束时,你容易知道何种决策有利而何种决策不利。

确定了这一点后,你就可以把它用到倒数第2次决策上,依次类推。

如果从游戏的开头出发进行分析,那是走不了多远的。

其原因在于,所有的战略决策都是要确定:“如果我这样做,那么下一个人会怎样做?”因此,在你以下海盗所做的决定对你来说是重要的,而在你之前的海盗所做的决定并不重要,因为你反正对这些决定也无能为力了。

记住了这一点,就可以知道我们的出发点应当是游戏进行到只剩两名海盗,即1号和2号的时候。

这时最厉害的海盗是2号,而他的最佳分配方案是一目了然的:100块金子全归他一人所有,1号海盗什么也得不到。

海盗分金心得

海盗分金心得

海盗分金心得摘要:1.引言:海盗分金问题的背景和重要性2.问题分析:海盗分金问题的条件和约束3.解决方案:利用数学方法和逻辑推理解决海盗分金问题4.结论:海盗分金问题的启示和应用场景正文:在海盗分金问题中,一群海盗需要分配他们所抢劫的金币。

问题在于,海盗们有不同的抢劫次数和贡献,但他们之间存在着互相制约的关系,使得分配过程充满了复杂性和不确定性。

为了解决这个问题,我们可以运用数学方法和逻辑推理。

首先,我们需要了解海盗分金问题的条件和约束。

问题中给出了以下约束条件:1.每个海盗至少得到一枚金币;2.最后一个抢劫的海盗至少得到两枚金币;3.每个海盗抢劫的金币数量不能超过总金币数的2/3。

接下来,我们可以利用数学方法和逻辑推理来解决海盗分金问题。

我们可以采用一种贪心策略,依次分配金币,使得每个海盗在分配过程中都能获得最优解。

1.首先,将金币随机分配给海盗们,每个海盗至少得到一枚金币;2.然后,从海盗中选出抢劫次数最少的海盗,将剩余金币中的一枚分配给他,使其满足第二个约束条件;3.接下来,删除已经分配过的金币,再次随机分配剩余的金币,每个海盗至少得到一枚金币;4.重复步骤2和3,直到所有金币都被分配完毕。

通过这种方法,我们可以确保每个海盗在满足约束条件的前提下,得到尽可能多的金币。

当然,这种方法并非唯一解,但在很多情况下,它可以得到一个合理的分配方案。

最后,我们来总结一下海盗分金问题的启示和应用场景。

这个问题告诉我们,在面临复杂分配问题时,可以运用数学方法和逻辑推理来找到解决方案。

此外,海盗分金问题也在现实生活中有诸多应用,如企业奖金分配、团队收益分成等。

通过分析问题条件和约束,我们可以找到一个相对公平、合理的分配方案,从而避免纷争和矛盾。

总之,海盗分金问题虽然看似简单,但其背后蕴含着丰富的数学和逻辑知识。

海盗分金

海盗分金

海盗分金是一个非常古老的问题,在1999年《科学美国人》正式把它发表之前,已经至少流行了10年了,相信很多人都有所耳闻,也知道解法。

此前死理性派也对这个问题也有所涉及。

今天我们就来回顾一下这个有意思的问题,并且在把问题推广到大规模海盗团伙后,会得出一些非常有意思的结论。

分金的规则有五个非常聪明的海盗,他们都是死理性派,编号分别是P1、P2、P3、P4、P5。

他们一同抢夺了100个金币,现在需要想办法分配这些金币。

海盗们有严格的等级制度:P1<P2<P3<P4<P5。

海盗们的分配原则是:等级最高的海盗提出一种分配方案。

然后所有的海盗投票决定是否接受分配,包括提议人。

并且在票数相同的情况下,提议人有决定权。

如果提议通过,那么海盗们按照提议分配金币。

如果没有通过,那么提议人将被扔出船外,由下一个最高等级的海盗再提出新的分配方案。

海盗们基于三个因素来做决定。

首先,要能留在船上存活下来。

其次,要使自己的利益最大化(即得到最多的金币)。

最后,在所有其他条件相同的情况下,优先选择把别人扔出船外(这是因为每个海盗都想夺占这条船的控制权)。

海盗的逻辑现在,假如你是等级最高的P5,你会做何选择?直觉上,为了保住自己的生命,你可能会选择留给自己很少的金币,以便让大家同意自己的决策。

然而,结果和此大相径庭。

解决这个问题的关键在于换个思维方向。

与其苦思冥想你要做什么决策,不如先想想最后剩下的人会做什么决策。

假设现在只剩下P1和P2了,P2会做什么决策?很明显,他将把100金币留给自己,然后投自己一票。

由于在票数相同的情况下提议人有决定权,无论P1同不同意,P2都能毫无危险地将所有金币收入囊中。

现在再把P3考虑进来。

P1知道,如果P3被扔下海,那么游戏就会出现上述的情况,自己终将一无所获。

由于他们都很聪明,P3同样能看到这一点,所以他知道,只要给P1一点点利益,P1就会投票支持他的决策。

所以P3最终的决策应该是:( P3,P2,P1 ) → ( 99,0,1 )P4的策略也类似:由于他需要50%的支持率,所以他只需贿赂1个金币给P2就可以了。

五个海盗分金币的逻辑题

五个海盗分金币的逻辑题

五个海盗分金币的逻辑题这是一个非常有趣的逻辑题,被称为“五个海盗分金币”问题。

这个问题可以描述如下:假设有五个海盗(A、B、C、D、E),他们掠夺了一些金币。

这些海盗按照权力大小排列,即A最有权力,B次之,以此类推,E最没有权力。

海盗们需要按顺序决定如何分配金币。

按照规则:1. A首先提出分配方案,并且提案需要得到至少半数(3个或以上)的海盗认可才能通过。

2. 如果A提出的方案通过,那么分配按照他的提案进行。

3. 如果A的方案未得到至少半数海盗的认可,A将被杀死,然后B提出分配方案,需要得到至少半数(2个或以上)的海盗认可才能通过。

4. 如果B的方案通过,那么分配按照他的提案进行。

5. 如果B的方案未得到至少半数海盗的认可,B将被杀死,然后C提出分配方案,需要得到至少半数(2个或以上)的海盗认可才能通过。

6. 后续的海盗提出方案和决策规则与B相同,但是需要得到至少半数的海盗认可。

问题是,海盗们应该如何提出方案,以便获得最多的金币,同时又能保证自己的生存?答案:这个问题虽然看似复杂,但实际上可以通过推理得出最佳解决方案。

以下是最佳方案的推理过程:1. 如果只有A一人,则A可以提出方案,自己拿100%的金币。

2. 如果有A、B两人,A需要得到至少B的支持才能通过方案,因此A会提出给B一个金币,自己拿剩下的金币。

3. 如果有A、B、C三人,按照同样的逻辑,A会提出给B一个金币,给C一个金币,自己拿剩下的金币。

4. 如果有A、B、C、D四人,A会提出给B一个金币,给C一个金币,给D一个金币,自己拿剩下的金币。

5. 如果有A、B、C、D、E五人,A需要得到至少B、D的支持才能通过方案,因此A会提出给B一个金币,给D一个金币,自己拿剩下的金币。

通过这个推理过程,我们可以得出最佳方案为:A拿98个金币,B拿0个金币,C拿1个金币,D拿1个金币,E拿0个金币。

这样,A可以确保自己的生存(因为至少会有B和D支持他的方案),并且能拿到最多的金币。

五个海盗分金币的逻辑题

五个海盗分金币的逻辑题

五个海盗分金币的逻辑题一、引言在这个逻辑题中,我们将探讨五个海盗如何分配一定数量的金币。

这个题目看似简单,但背后涉及到一系列复杂的逻辑和策略问题。

通过分析不同的情况和可能性,我们可以得出一种合理的分配方案。

本文将以从简到繁、由浅入深的方式来讨论这个主题,帮助读者更好地理解。

二、问题描述假设有五个海盗,他们共同掌握了一定数量的金币。

现在,他们需要按照一定规则分配这些金币。

以下是问题的具体描述:1. 这五个海盗按照编号从1到5依次排列。

2. 海盗1是首领,他有权利提出一份分配方案,并自己先投票。

3. 所有海盗包括首领,都会进行投票。

如果多数人同意,分配方案立即生效。

4. 如果有多个方案得到相同的票数,那么首领可以在这些方案中进行选择。

5. 如果分配方案得到了多数人的支持,包括首领自己在内,那么分配方案生效并按照规定的方式执行。

6. 如果分配方案未得到多数人的支持,包括首领自己不支持,那么首领将被扔下海鲨鱼吃掉,然后重新选择一个新的首领,整个过程重复。

问题的关键在于,每个海盗都想尽可能获取更多的金币,但又不能得罪其他海盗,以至于自己失去性命。

在这种情况下,我们来探讨一种合理的分配方案。

三、分配方案的解析1. 最初思考让我们从一种最简单的情况开始思考。

假设只有1枚金币,海盗1应该如何分配给其他4个海盗以及自己?我们可以发现,海盗1自己一定要得到这1枚金币。

因为如果他不得到金币,那么他将被扔下海并重新选择首领。

而其他4个海盗也不愿意让海盗1拿到太多金币,因为这会导致其他人的经济地位下降,再加上他们也有可能成为下一个首领。

在这种情况下,我们得出的结论是:海盗1将获得全部金币。

2. 增加金币数量现在,让我们考虑更多的金币。

假设有10枚金币,海盗1将如何分配?我们可以设想以下几个情况:(1)海盗1将全部金币分给除自己以外的其他海盗。

在这种情况下,其他海盗将会支持分配方案,因为他们会得到更多的金币。

(2)海盗1分给自己1枚金币,并分剩下的9枚金币给其他海盗。

海盗分金币——精选推荐

海盗分金币——精选推荐

经济小故事--海盗分金币
船上有10个海盗,要分抢来的100枚金币。

自然,这样的问题他们是由投票来解决的。

投票的规则如下:先由最凶残的海盗来提出分配方案,然后大家一人一票表决,如果有50%或以上的海盗同意这个方案,那么就以此方案分配,如果少于50%的海盗同意,那么这个提出方案的海盗就将被丢到海里去喂鱼,然后由剩下的海盗中最凶残的那个海盗提出方案,依此类推。

怎么分金币才能使最凶残的海盗收益最大而且不被丢海里?
对于最后一名海盗来说,轮到他发言时,只有两个海盗了,因此第9个海盗不管提出什么都有50%赞成,因此他会提出100金币全给自己,而第10名没有。

这时候第8名海盗可以提出给自己99个,给第10名海盗1个金币,而第9名没有。

因为第10名海盗按照上述方案一无所有,现在有一个,也会赞成。

同理,第7名海盗可以提出给自己99个,给第9名1个,拉拢第9个跟他一起达到50%的支持率。

第6名可以提出给自己98个,给第8名1个,给第10名1个,……
第k个海盗提出合理的方案为给第k+2n(n=1,2……)个海盗每人1个,其余的都归自己。

所以第一个海盗提出的是给自己96个,给3,5,7,9每人1个。

java海盗分金算法题

java海盗分金算法题

java海盗分金算法题一、问题描述一群海盗想要分金子,他们按照古老的规则进行分配。

每位海盗都有一张扑克牌,其中黑桃K代表最大值,黑色牌代表小于100的数字,红色牌代表大于等于100的数字。

每轮每位海盗都可以选择留下一部分金子或者选择重新分配。

每轮结束时,如果无人选择重新分配,则按照黑桃K-最大的黑色牌-最大的红色牌的顺序依次分配金子。

如果有多个最大值,则按照黑桃K-最小的数字分配。

每位海盗都有自己的利益诉求,他们如何选择才能最大化自己的利益呢?二、算法描述这是一个经典的博弈问题,涉及到贪婪算法和递归的运用。

为了解决这个问题,我们可以设计如下的算法:1. **初始化**:每个海盗初始状态下可以保留一部分金子或者进行重新分配。

由于海盗们的目标是在最后一轮拿到尽可能多的金子,所以在一开始他们可以遵循平均分配的原则,尽可能在前期获取更多的金子。

2. **迭代过程**:按照轮流下注的方式进行迭代。

每次迭代中,每个海盗都可以选择保留一部分金子或者进行重新分配。

如果无人选择重新分配,则按照上述规则进行分配。

在这个过程中,每个海盗都需要根据之前的分配结果和自己的利益诉求来做出决策。

3. **退出条件**:当某个海盗选择不再参与分配时,可以结束迭代过程。

此时,根据之前的分配结果和黑桃K的规则进行最终分配。

三、Java实现以下是一个用Java实现的简单示例代码:```javaimport java.util.*;public class JavaPirateGold {public static void main(String[] args) {// 初始化海盗列表和金子数量List<String> pirates = Arrays.asList("C", "K", "A", "2", "3", "4", "5", "6");int gold = 100;// 按照规则进行分配System.out.println(pirateGoldDistribution(pirates, gold));}public static String pirateGoldDistribution(List<String> pirates, int gold) {// 用于记录当前分配结果的列表List<Integer> distribution = new ArrayList<>();// 迭代分配过程for (int i = 0; i < pirates.size(); i++) {boolean redistribute = false; // 是否需要重新分配标志位 // 循环进行分配和判断是否需要重新分配while (!redistribute) {// 判断是否有人需要重新分配if (i == pirates.size() - 1 ||Integer.parseInt(pirates.get(i + 1)) >distribution.get(distribution.size() - 1)) {// 需要重新分配的情况:无人需要保留或者下一轮数字更大时需要重新分配redistribute = true;} else {// 不需要重新分配的情况:有人需要保留时保留当前最大的数字并减少下一轮数字的机会distribution.add(gold / pirates.size()); // 平均分配金子pirates.remove(i + 1); // 下一轮数字的机会减少一位海盗的判断机会}}// 输出当前分配结果并返回结果字符串System.out.println("Round " + (i + 1) + ": " + distribution);}returndistribution.stream().mapToInt(Integer::intValue).sum() + " gold"; // 最终分配结果的金子数量字符串化并返回}}```四、总结这个算法题是一个经典的博弈问题,涉及到贪婪算法和递归的运用。

海盗分金

海盗分金

经济学上有个“海盗分金”模型,是说5个海盗抢得100枚金币,他们按抽签的顺序依次提方案:首先由1号提出分配方案,然后5人表决,超过半数同意方案才被通过,否则他将被扔入大海喂鲨鱼,依此类推。

“海盗分金”其实是一个高度简化和抽象的模型,体现了博弈的思想。

在“海盗分金”模型中,任何“分配者”想让自己的方案获得通过的关键是事先考虑清楚“挑战者”的分配方案是什么,并用最小的代价获取最大收益,拉拢“挑战者”分配方案中最不得意的人们。

假定“每人海盗都是绝顶聪明且很理智”,那么“第一个海盗提出怎样的分配方案才能够使自己的收益最大化?”推理过程是这样的:从后向前推,如果1至3号强盗都喂了鲨鱼,只剩4号和5号的话,5号一定投反对票让4号喂鲨鱼,以独吞全部金币。

所以,4号惟有支持3号才能保命。

3号知道这一点,就会提出“100,0,0”的分配方案,对4号、5号一毛不拔而将全部金币归为已有,因为他知道4号一无所获但还是会投赞成票,再加上自己一票,他的方案即可通过。

不过,2号推知3号的方案,就会提出“98,0,1,1”的方案,即放弃3号,而给予4号和5号各一枚金币。

由于该方案对于4号和5号来说比在3号分配时更为有利,他们将支持他而不希望他出局而由3号来分配。

这样,2号将拿走98枚金币。

同样,2号的方案也会被1号所洞悉,1号并将提出(97,0,1,2,0)或(97,0,1,0,2)的方案,即放弃2号,而给3号一枚金币,同时给4号(或5号)2枚金币。

由于1号的这一方案对于3号和4号(或5号)来说,相比2号分配时更优,他们将投1号的赞成票,再加上1号自己的票,1号的方案可获通过,97枚金币可轻松落入囊中。

这无疑是1号能够获取最大收益的方案了!答案是:1号强盗分给3号1枚金币,分给4号或5号强盗2枚,自己独得97枚。

分配方案可写成(97,0,1,2,0)或(97,0,1,0,2)。

企业中的一把手,在搞内部人控制时,经常是抛开二号人物,而与会计和出纳们打得火热,就是因为公司里的小人物好收买。

【高中数学】海盗分金问题异调

【高中数学】海盗分金问题异调

【高中数学】海盗分金问题异调这是一帮亡命之徒,在海上抢人钱财,夺人性命,干的是刀头上舔血的营生。

在我们的印象中,他们一般都瞎一只眼,用条黑布或者讲究点的用个黑皮眼罩把坏眼遮上。

他们还有在地下埋宝的好习惯,而且总要画上一张藏宝图,以方便后人掘取。

不过大家是否知道,他们是世界上最民主的团体。

参加海盗的都是桀骜不驯的汉子,是不愿听人命令的,船上平时一切事都由投票解决。

船长的唯一特权,是有自己的一套餐具??可是在他不用时,其他海盗是可以借来用的。

船上的唯一惩罚,就是被丢到海里去喂鱼。

现在船上有若干个海盗,要分抢来的若干枚金币。

自然,这样的问题他们是由投票来解决的。

投票的规则如下:先由最凶猛的海盗来提出分配方案,然后大家一人一票表决,如果有50%或以上的海盗同意这个方案,那么就以此方案分配,如果少于50%的海盗同意,那么这个提出方案的海盗就将被丢到海里去喂鱼,然后由剩下的海盗中最凶猛的那个海盗提出方案,依此类推。

我们先要对海盗们作一些假设。

1)每个海盗的凶猛性都不同,而且所有海盗都知道别人的凶猛性,也就是说,每个海盗都知道自己和别人在这个提出方案的序列中的位置。

另外,每个海盗的数学和逻辑都很好,而且很理智。

最后,海盗间私底下的交易是不存在的,因为海盗除了自己谁都不相信。

2)一枚金币是不能被分割的,不可以你半枚我半枚。

3)每个海盗当然不愿意自己被丢到海里去喂鱼,这是最重要的。

4)每个海盗当然希望自己能得到尽可能多的金币。

5)每个海盗都是现实主义者,如果在一个方案中他得到了1枚金币,而下一个方案中,他有两种可能,一种得到许多金币,一种得不到金币,他会同意目前这个方案,而不会有侥幸心理。

总而言之,他们相信二鸟在林,不如一鸟在手。

6)最后,每个海盗都很喜欢其他海盗被丢到海里去喂鱼。

在不损害自己利益的前提下,他会尽可能投票让自己的同伴喂鱼。

现在,如果有10个海盗要分100枚金币,将会怎样?要解决这类问题,我们总是从最后的情形向后推,这样我们就知道在最后这一步中什么是好的和坏的决定。

聪明人的问题

聪明人的问题

NO1(海盗分金币)5个海盗抢得100枚金币后,讨论如何进行公正分配。

他们商定的分配原则是:(1)抽签确定各人的分配顺序号码(1,2,3,4,5);(2)由抽到1号签的海盗提出分配方案,然后5人进行表决,如果方案得到超过半数的人同意,就按照他的方案进行分配,否则就将1号扔进大海喂鲨鱼;(3)如果1号被扔进大海,则由2号提出分配方案,然后由剩余的4人进行表决,当且仅当超过半数的人同意时,才会按照他的提案进行分配,否则也将被扔入大海;(4)依此类推。

这里假设每一个海盗都是绝顶聪明而理性,他们都能够进行严密的逻辑推理,并能很理智的判断自身的得失,即能够在保住性命的前提下得到最多的金币。

同时还假设每一轮表决后的结果都能顺利得到执行,那么抽到1号的海盗应该提出怎样的分配方案才能使自己既不被扔进海里,又可以得到更多的金币呢?NO2(猜牌问题)-S先生、P先生、Q先生他们知道桌子的抽屉里有16张****牌:红桃A、Q、4黑桃J、8、4、2、7、3草花K、Q、5、4、6方块A、5。

约翰教授从这16张牌中挑出一张牌来,并把这张牌的点数告诉P先生,把这张牌的花色告诉Q先生。

这时,约翰教授问P先生和Q先生:你们能从已知的点数或花色中推知这张牌是什么牌??于是,S先生听到如下的对话:P先生:我不知道这张牌。

Q先生:我知道你不知道这张牌。

P先生:现在我知道这张牌了。

Q先生:我也知道了。

听罢以上的对话,S先生想了一想之后,就正确地推出这张牌是什么牌。

请问:这张牌是什么牌?NO3(燃绳问题)烧一根不均匀的绳,从头烧到尾总共需要1个小时。

现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?NO4(乒乓球问题)-假设排列着100个乒乓球,由两个人轮流拿球装入口袋,能拿到第100个乒乓球的人为胜利者。

条件是:每次拿球者至少要拿1个,但最多不能超过5个,问:如果你是最先拿球的人,你该拿几个?以后怎么拿就能保证你能得到第100个乒乓球?NO5(喝汽水问题)-1元钱一瓶汽水,喝完后两个空瓶换一瓶汽水,问:你有20元钱,最多可以喝到几瓶汽水?NO6(分割金条)-你让工人为你工作7天,给工人的回报是一根金条。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
现在只有一枚金币,该怎么分呢?仍然用逆向递推方法。如果看了前面,应该知道只剩三名海盗时,分配方案是(1,0,0)。推理过程不再赘述。
如果剩四名海盗时,情况如何?首先,三号海盗肯定反对二号,原因前面已讲,这里不再赘述。所以,二号一定要争取到四号和五号,这样他的方案才会有半数以上的人同意。在三人分配中,四号和五号得到零枚。可现在的问题是金币只有一枚,无法同时满足四号和五号。如果给四号一枚,五号不同意;如果给五号一枚,四号不同意。综合一下,就是四人分配时,二号必定挂掉。有人会说,给四号或五号一枚,五号或四号有可能同意啊。实际上,没有可能,因为他们是Pirates。所以,二号的策略就是千方百计保住一号,这样才能保住自己。
3. 当P为奇数时,有三种情况:
①(P-3)/2<N<(P+1)/2或P=2*N+1,分配(0,1,1,0……1,0,0),注:1,0为一组,重复出现,出现的次数为(P-3)/2。
②(P-1)/2<N<(P+3)/2,分配(0,0,1,*……1,*,*),注:1,*为一组,重复出现,出现的次数为(P-3)/2,将其中一个“*”替换为2,其它替换为“0”。
现在,轮到我们一号海盗做出决定了。如果你是一号,又该如何呢?首先,二号是铁定反对一号了,不用考虑,原因不再赘述。一号只需争取到三号、四号、五号中的两票就超过半数了。三号在四人分配中是一枚金币也拿不到的。那我们就给三号一枚,这就他利益的最大化,他肯定会同意的。四号、五号在四人分配中能得到一枚,那我们给四号、五号其中一人两枚金币就可以了,绝对不能是一枚,两枚才是四号/五号利益的最大化。这样,五名海盗的分配结果是(97,0,1,2,0)或(97,0,1,0,2)。
如果五名海盗来分配两枚金币有什么方案呢?不同于只有一枚金币的时候,二号不再是铁杆,他是否同意要看一号的表现了,而四人分配时二号没有获得金币。那么我们给二号一枚,二号肯定同意。四人分配时三号也没有金币,我们给三号一枚,三号也肯定同意。所以,有两枚金币的时候,分配方案是(0,1,1,0,0)。
如果五名海盗来分配了,一号有什么方案呢?其实,利益冲突已经很明朗了。四人分配不可能成立,二号必定挂掉,则二号必定同意一号,这是铁票。只要再争取到一票就行了。考虑三号、四号、五号的利益时,可以直接跳到三人分配的情况。从分配方案可知,三号能独占金币,他必定不同意一号,这也是铁票。只能从四号或五号中选一名,给他一枚金币了。如果他不同意,就一枚也没有,同意就有一枚,这是他利益的最大化。所以,只有一枚金币的时候,分配方案是(0,0,0,1,0)或(0,0,0,0,1)。
}
else
{
b[p]='*';b[2]='0';a[1]=g-(p+1)/2;
for (i=p-1;i>2;)
else
{
if (s==1)
{
if (g>(p-3)/2&&g<(p+1)/2||p==2*g+1)
{
a[p]=0;a[2]=1;a[1]=0;
for (i=p-1;i>2;)
{a[i]=0;i=i-2;}
现在有两枚金币了,中间过程会出现很大的差异。用逆向递推方法。知道剩三名海盗时,分配方案是(2,0,0)。推理过程不再赘述。
如果剩四名海盗时,情况如何?首先,三号海盗肯定反对二号,原因不再赘述。所以,二号一定要争取到四号和五号,这样他的方案才会有半数以上的人同意。在三人分配中,四号和五号得到零枚。而现在有两枚金币了,不是一枚,可以给四号和五号每人一枚。如果四号、五号反对,那他们一枚金币也拿不到;如果他们同意,就能拿到一枚,这是他们利益的最大化。所以,四人分配两枚金币的方案是(0,0,1,1)。
for (i=p-1;i>0;)
{b[i]='*';i=i-2;}
for (i=p-2;i>1;)
{a[i]=1;i=i-2;}
printf ("\nUsing Method 2\n");
上面所说的,应该包括所有的海盗分金币的情况。根据条件,我用C语言编译了一段海盗分金币的程序,只要输入海盗数和金币数,就能立刻得到分配方案。需要注意的是,不符合条件的不能分配,数目太大也不能分配(七亿个海盗分八亿个金币,能分配,但程序中的数据溢出了)。
#include <stdio.h>
5人1枚时,分配(0,0,0,*,*),注:将其中一个“*”替换为0,其它替换为“1”。
7人2枚时,分配(0,0,*,0,0,*,*),注:同上。
9人3枚时,分配(0,0,*,0,0,*,0,*,*),注:同上。
P人(2*N+3)枚时,分配(0,0,*,0,0,*……0,*,0,*,*),注,0,*为一组,重复出现,出现的次数为(P-7)/2,将其中一个“*”替换为0,其它替换为“1”。
五名海盗分金币(1)——100枚金币该怎么分?
题目是:五名海盗分100枚金币,抽签决定先后顺序,第一个人提出一个方案,如果该方案被在场半数以上的人(包括自己)同意,就执行该方案,否则他将被扔进大海;第一个海盗如果挂掉,按顺序第二个再提出一个方案,规则一样,以此类推。五名海盗都是智商极高,遵循“保住性命还能分得金币最多”的原则。那么,如果你是第一名海盗,你该提出什么方案?
这样,再向上递推,剩下四名海盗的时候,情况又会怎么样呢?而最后的结果又会如何呢?
五名海盗分金币(2)——100枚金币该怎么分?
如果剩下四名海盗的时候,情况如何呢?首先,三号海盗肯定反对二号提出的任何方案,即使二号提出把100枚金币全部给三号的方案,三号也要把二号挂掉,因为他可以独吞金币还能除去竞争者,这是他利益的最大化。所以,二号一定要争取到四号和五号,这样他的方案才会有半数以上的人同意。再看只剩三名海盗时,四号和五号得到零枚。那么,二号只需给四号和五号每人一枚金币就可以了。如果四号、五号反对,那他们一枚金币也拿不到;如果他们同意,就能拿到一枚,这是他们利益的最大化。而二号不会给四号、五号多于一枚金币了,98枚是二号利益的最大化。所以剩下四名海盗时的分配结果是(98,0,1,1)。
乍一听这道题,第一反应就是一号海盗肯定死定了。每个海盗都考虑利益最大化的话,当然是人越少分的金币越多了。一号海盗不论提出什么样的方案,肯定不通过,一号就挂掉了;然后二号提出方案,再挂掉;直到五号海盗不同意四号的,把四号挂掉,五号就能独吞所有金币了。好像这道题没有答案,其实不然。上面的思考方式是正向考虑。而这道题恰恰要求使用逆向递归方法来解答。
void main ()
{
int p,g,i,s,t,*a,*b;
printf ("\nPlease Input the Number of Pirates:\n");
scanf ("%d",&p);
printf ("\nPlease Input the Number of Gold Coins:\n");
一号没有金币但保住了性命,二号是为了保命而同意一号,四号或五号为了金币而同意一号。
不知道大家对海盗分金币的问题有没有兴趣,我们下期再讨论一下只有两枚金币的情况。
五名海盗分金币(4)——现在是两枚金币了!
只有一枚金币的时候,分配方案是(0,0,0,1,0)或(0,0,0,0,1)。
按照逆向方法反推回去。如果只剩两名海盗的时候,五号海盗一定不同意四号海盗提出的方案。无论四号提出什么方案,五号都要把他挂掉。即使四号提出将所有金币都给五号的方案,五号也要把他挂掉,因为他们是Pirates。五号可以独吞金币还能除去竞争者,何乐而不为呢?
对于四号来说,他要保住性命,就不能出现只剩两名海盗的情况,所以他必然全力支持三号的建议,不能让三号挂掉。这样,在只剩三名海盗的情况,三号不论提出什么样的方案,四号必然同意,再加上他自己同意,肯定超过半数了。所以,三号提出独吞100枚金币的方案一定会被采纳。这样,四号、五号就一枚金币也没有。
scanf ("%d",&g);
a=(int*)malloc((p+1)*sizeof(int));
b=(char*)malloc((p+1)*sizeof(int));
s=p%2;
if (p>2&&p<2*g+2)
{
if (p==3)
{a[1]=g;a[2]=0;a[3]=0;}
一直是人数保持固定,金币数量在变化,如果人数和金币数都在变化该怎么办呢?在这里不做推导,直接给出结果。
一,首先,人数和金币数的条件是2<P<2*N+2,P表示人数,N表示金币数。不过,还有相当特殊情况,最后再说。
1. P=3,分配(N,0,0)。
2. 当P为偶数时,分配(N-P/2,0,1……0,1,1),注:0,1为一组,重复出现,出现的次数为(P-2)/2。
for (i=1;i<=p;i++)
printf ("%d ",a[i]);
}
else
{
if (g>(p-1)/2&&g<(p+3)/2)
ቤተ መጻሕፍቲ ባይዱ
{
b[p]='*';a[1]=0;
如果有四枚金币时,三人分配(4,0,0),四人分配(2,0,1,1),五人分配(2,0,1,*,*),注:将其中一个“*”替换为“2”,其它替换为“0”。
如果是四枚以上金币时,五人分配结果(N-3,0,1,*,*),注:N为总金币数,将其中一个“*”替换为“2”,其它替换为“0”。
for (i=p-2;i>1;)
相关文档
最新文档