【题目】

有5个海盗,号码分别是1、2、3、4、5,某天抢到了100枚金币,他们决定按下列原则分赃:

(1)由1号提出分配方案,然后剩余的4人表决,当一半或以上的人同意时方案被通过,否则他将被扔入大海喂鲨鱼;

(2)1号死后,由2号提方案,剩余的3人表决,当一半或以上的人同意时方案通过,否则2号同样被扔入大海;

(3)依次类推。

问1号海盗提出怎样的分配方案才能使自己的利益最大化。

【问题背景】

这是某天在网上闲逛时偶尔看到的一个帖子“微软1千万每年的面试题”。初次看到没什么头绪,以为非常困难,后来无意在纸上画画,得出了两个结论。因为到目前为止,没看到过官方公布的正确答案,这里列出我的思路,与有兴趣的朋友一起讨论。

【答案】

我自己推理得出的结果是:97,0,1,2,0   或者  97,0,1,0,2。

【数值试验】

【程序穷举】

【推理过程】

题目的意思为:自己提出的方案,自己不参与表决,剩余的人一半或以上的人同意才能通过。

下面是我的推理过程,其中:未=未知=不一定,*表示没有这一项或者已经死了

=========================================================

方案提出人  分配方案      表决数      支持        方案能通过        人是否得活

--------------------------------------------------------------------------

第5人    *,*,*,*,100      0        *****          是               是

第四个人给他的宝石至少101,他才会肯定支持第四个人的方案

---------------------------------------------------------------------------

第4人   *,*,*,0,100       1        ****未         未              未是

第四个人给了第5个人100颗,第5个人是否支持未知,

所以第三个人即使给第四个人0颗,第四个人也会支持,保命要紧

--------------------------------------------------------------------------

第3人   *,*,100,0,0       2        ***是否         是           是是是

第二个人分给第三个人至少101颗,第三人才会肯定支持

第二个人分给第四个人至少一颗,第四人才会肯定支持

第二个人分给第五个人至少一颗,第五人才会肯定支持

--------------------------------------------------------------------------

第2人   *,98,0,1,1        3        **否是是         是         是是是是

第一个人分给第二个人至少99颗,第二人才会肯定支持

第一个人分给第三个人至少一颗,第三人才会肯定支持

第一个人分给第四个人至少两颗,第四人才会肯定支持

第一个人分给第五个人至少两颗,第五人才会肯定支持

-------------------------------------------------------------------------

第1人    97,0,1,2,0       4      *否是是否         是         是是是是是

第1人    97,0,1,0,2       4      *否是否是         是         是是是是是

=========================================================

至此推理结束,最终的分配方案为:

97,0,1,2,0        或者        97,0,1,0,2

【扩展】

这个题目好像还有一种提法,说的是1号提出分配方案后,所有的人都参与投票,当且仅当一半以上的人同意才能通过,否则1号被喂鲨鱼。

这种提法与本文的提法不同,但是效果一致,因为自己的提法自己肯定是支持的。

如果6个人分,7个人分又会有什么结果呢?我没仔细想过。

【结论】

这题目从后往前推的过程很有意思,但是推理过程是否合理呢?

因为网上还有很多人说第一个人最多可以获得98颗宝石。

虽然一直坚持自己的观点,当然更希望得到正确答案。

100颗宝石5个海盗怎么分相关推荐

  1. 5个海盗分100颗宝石

    5个海盗抢到了100颗宝石,每一颗都一样的大小与价值. 他们决定这么分: 1.抽签决定自己的号码(1,2,3,4,5) 2.首先,由1号提出分配方案,然后大家5人进行表决,当且仅当超过半数的人同意时, ...

  2. 5个海盗怎么分100颗宝石

    5个海盗得到一批宝石共100颗,每颗都一样,价值连城,打算分配. @I7.{y,   G94:+tE   分配规则: PZjobxHe   br!$8BH   抽签决定先后顺序,抽到第一的海盗先提出自 ...

  3. 5个强盗分100颗宝石

    5个海盗抢到了100颗宝石,每100颗宝石大小相同且价值连城,他们决定这么分: (1)抽签决定自己的号码(1.2.3.4.5). (2)首先,由1号提出分配方案,然后大家5人进行表决,当超过半数的人同 ...

  4. 5个海盗,分100个金币

    五位绝顶聪明.勇敢.理智.果断干练的女海盗抢得100枚金币后,讨论如何进行公正分配.他们商定的分配原则是:    (1)抽签确定各人的分配顺序号码(1,2,3,4,5):    (2)由抽到1号签的女 ...

  5. 编程趣事 100元x100元是否等于10000分x10000分

    在软件开发过程中,接口联调是实现项目交互无法避免的,在联调过程中会出现一些数据之间的转换的问题,例如基本数据类型的转换.换算单位之间的转换等等,今天我们就通过金额分与元做切入点,聊一聊换算单位之间的转 ...

  6. 笔试真题:100颗糖果,甲乙轮流从糖果盒中取出糖果,每次可取出2、4或6颗,若取得最后糖果的玩家为最终胜者,若甲先取z则(甲获胜,乙获胜,平局,不确定)

    笔试真题:100颗糖果,甲乙轮流从糖果盒中取出糖果,每次可取出2.4或6颗,若取得最后糖果的玩家为最终胜者,若甲先取z则(甲获胜,乙获胜,平局,不确定) 解析: 想让甲赢,只需保证最后剩8颗糖(乙取2 ...

  7. GIS实战应用案例100篇(二十一)-全国分省、市、县净初级生产力NPP数据制作实战(附代码)

    前言 净初级生产力(Net primary productivity, NPP)是研究陆地生态系统中物质和能量转换的重要指标,NPP的空间分布与区域气候.植被生长以及人类活动等因素息息相关,其变化能反 ...

  8. 【Go语言入门100题】022 奇偶分家 (10 分) Go语言 | Golang

    [题解][PTA团体程序设计天梯赛] L1-022 奇偶分家 (10 分) Go语言|Golang 给定N个正整数,请统计奇数和偶数各有多少个? 输入格式: 输入第一行给出一个正整N(≤1000):第 ...

  9. 【Go语言入门100题】044 稳赢 (15 分) Go语言 | Golang

    [题解][PTA团体程序设计天梯赛] L1-044 稳赢 (15 分) Go语言|Golang 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现要求你编 ...

最新文章

  1. 详解Struts2 Action名称的搜索顺序
  2. java 6 26_WebSphere7.0 Java6.26安装
  3. lol韩服游戏内设置_lol韩服游戏内设置界面翻译
  4. php 排序不影响索引,为什么不能通过索引避免排序操作呢??
  5. DRUID连接池的简单使用
  6. STL源码剖析 heap堆结构
  7. Hive 之collect_list/collect_set(列转行)
  8. linux更改root密码_如何在Linux中更改root密码
  9. mysql时间加8小时_劳斯莱斯库里南,超精致1:8模型车,组装时间长达450个小时...
  10. springboot 连接sftp服务器
  11. linux 串口驱动解析之2440
  12. origin做相关性分析图_Origin教程第六章 使用Origin进行数据分析
  13. 无背景申请奥克兰大学计算机,奥克兰大学无背景要求的专业
  14. 从外包、互联网到国有企业,再到研究生拟录取,三年时间让我悟出了自己人生的意义
  15. 通过企业微信或者微信公众号发送小程序消息推送功能
  16. Django migrate 报错,通过fake 和 --fake-initial来修复
  17. Java中实现十进制数转换为二进制
  18. 清华计算机408考研真题资料经验分享
  19. 东莞市中考计算机考试试题,东莞市数学中考真题(共7份word版,含答案).doc
  20. 【量化投资实训】基于MATLAB实验一.简单移动平均线MA

热门文章

  1. 蓝桥杯【第13届省赛】Python 实现
  2. Android P非SDK接口限制
  3. jQuery框架开发一个最简单的幻灯效果
  4. java 批量删除_Java中怎样实现批量删除操作?
  5. 简陋的CNN实现手写数字识别
  6. kafka的使用场景
  7. XILINX Ultrascale+ FPGA学习(2)——I/O接口组件原语和原生原语
  8. 【HDLBits 刷题 11】Circuits(7)Finite State Manchines 18-26
  9. iOS 两种预览使用详解(配Demo下载)( Quicklook UIDocumentInteractionController)
  10. 微信小程序 - 从入门到入土