海盗分赃问题-----简化问题,分而治之
目录
问题描述:
问题分析:
问题求解:(简化问题,分而治之)
假设有两个海盗进行分赃:(4号和5号)
假设有三个海盗进行分赃:(3号、4号和5号)
假设有四个海盗进行分赃:(2号、3号、4号和5号)
当有五个海盗进行分赃的时候:(1号、2号、3号、4号和5号)
总结:
问题描述:
五个极其聪明的海盗抢到100颗宝石,每一颗宝石都一样大小和价值连城。他们决定以抽签投票的方式来分配这些宝石:有(1、2、3、4、5)五个号码,每人抽取一个。首先,由1号提出分配方案,然后大家举手表决,当且仅当超过半数的人同意时,按照他的分配方案 进行分配,否则将被扔进海里喂鲨鱼。如果1号死后,再由2号提出分配方案,规则如前所述,以此类推。
问:第一个海盗提出怎样的分配方案才能使自己的收益最大化?为什么?
问题分析:
- 每个海盗都及其聪明 ----> 每个海盗都会做出对自己做大利益化的选择
- 每颗宝石都价值连城 ----> 即使只得到一颗宝石也会成为富翁
- 当且仅当超过半数人同意时即通过 -----> 必须要赢得半数以上的人支持才行
- 金钱准则 -----> 财不外露,越少人知道越好
- 人性弱点 -----> 活着总比死了好
- 此推理模型只在逻辑层面进行推理,不牵扯到深层次的社会工程学问题。
问题求解:(简化问题,分而治之)
对于五个海盗分赃时考虑的情况相对比较复杂,可以先假设只有两或三或四个海盗来按指定的规则来分配。
假设有两个海盗进行分赃:(4号和5号)----(为了与原题内容相互对应,便于理解我们使用4号和5号标签来标识这两个海盗,下同)
由于表决需要半数以上的人支持才能通过,5号又有心让4号被喂鲨鱼,所以无论4号提出什么方案都不能逃脱被喂鲨鱼的命运。
则此种情况下,5号会先杀死4号自己独占100课宝石。
也即:4号(die) 0 颗
5号 100颗
假设有三个海盗进行分赃:(3号、4号和5号)
如上述分析,若3号被喂鲨鱼,则4号也逃不过被喂鲨鱼的命运,所以无论3号提出什么样的分配方案,4号都会表示支持,且此时3号提出的方案会通过,也就说3号可以独占100颗宝石。此时的表决为2:1,表决通过。
也即:3号 100颗
4号 0颗
5号 0颗
假设有四个海盗进行分赃:(2号、3号、4号和5号)
如上所述,若2号被喂鲨鱼,则4号和5号也分不到宝石,所以2号只需向4号和5号施加一点小惠,即可得到最大的收益。也就是说2号给4号和5号各一颗宝石,自己独占剩下的宝石,此时的表决为3:1,表决通过。
也即:2号 98颗
3号 0颗
4号 1颗
5号 1颗
则当有五个海盗进行分赃的时候:(1号、2号、3号、4号和5号)
如上所述,若1号死后,2号可以得到98颗宝石,所以2号不会同意1号的任何方案。
若1号死后,由2号进行分配时,3号将得不到宝石,所以建议向3号实惠。
若1号死后,由2号进行分配时,4号和5号的被分配到的宝石一样,在此再赢得一票支持,1号就能以3:2的结果得到最大的收益。
也即:1号 97颗
2号 0颗
3号 1颗
4号 2颗
5号 0颗
总结:
对于一些比较复杂的问题不容易很快找到答案时,尝试将其划分成一个个很小的模块,但需要保证每一块的整体模式是不变的或相似的,然后从底层开始剖析,直至剖析出问题的答案时,即此题的正解。此种解题的思想被称为“简化问题,分而治之”。
海盗分赃问题-----简化问题,分而治之相关推荐
- 递归用法之“海盗分赃难题”
海盗分赃难题: 十个海盗要瓜分100枚金币,为此他们拟定了以下规则. 从船长到厨子每个海盗由高到低共分十个等级,分配权在最高等级的海盗手里.他可以任意分配每个海盗的所得,但必须取得一半或一半以上海盗( ...
- (算法)海盗分赃_2
分享一篇趣文(来自伯乐在线:http://blog.jobbole.com/70395/),同样是海盗分赃问题,这篇文章以诙谐幽默的口吻以及浅显易懂的对话来解释海盗分赃问题. 与上一篇博文海盗分赃_1 ...
- 详解:海盗分赃(25 分)
海盗分赃(25 分) P 个海盗偷了 D 颗钻石后来到公海分赃,一致同意如下分赃策略: 首先,P 个海盗通过抽签决定 1 - P 的序号.然后由第 1 号海盗提出一个分配方案(方案应给出每个海盗分得的 ...
- [益智]:海盗分赃(博弈论的实用)
海盗分赃 题目描述: 问题分析 看动漫理解这个问题 正确解答 题目升级: 正确思路 题目再升级: 正确思路 题目变种: 正确思路 现实生活中这种问题还有哪些变化呢? 再给大家分享一个关于金币的小游戏( ...
- 海盗分赃(8行代码搞定!)
海盗分赃 题目 答案 最简版本(8行代码) 详细流程 注意 题目 答案 最简版本(8行代码) #include<stdio.h> int main() {int money,n;scanf ...
- PTA编程题:海盗分赃(Java) (25 分)
海盗分赃 (25 分) P 个海盗偷了 D 颗钻石后来到公海分赃,一致同意如下分赃策略: 首先,P 个海盗通过抽签决定 1 - P 的序号.然后由第 1 号海盗提出一个分配方案(方案应给出每个海盗分得 ...
- 【博弈论】关于三姬分金(五海盗分赃)的博弈论问题分析
在看<天行九歌>的时候,看到了这个问题,之前在刷OI竞赛题的时候也刷到过一个,今天打算理一下关于这个问题的思路. 首先三姬分金和五海盗分赃其实都是一类问题"纳什均衡", ...
- 进阶实验2-3.1 海盗分赃 (25 分)
P 个海盗偷了 D 颗钻石后来到公海分赃,一致同意如下分赃策略: 首先,P 个海盗通过抽签决定 1 - P 的序号.然后由第 1 号海盗提出一个分配方案(方案应给出每个海盗分得的具体数量),如果能够得 ...
- PTA 7-98 海盗分赃 (25分)
P 个海盗偷了 D 颗钻石后来到公海分赃,一致同意如下分赃策略: 首先,P 个海盗通过抽签决定 1 - P 的序号.然后由第 1 号海盗提出一个分配方案(方案应给出每个海盗分得的具体数量),如果能够得 ...
最新文章
- [Google Android] Creating Your Own Spelling Checker Service
- 【音视频安卓开发 (八)】OpenSLES播放音频步骤和接口讲解
- sklearn常用函数(更新中)
- python 写入excel_基于Python实现Excel的读写
- LeetCode 中级 - 第k个排列(60)
- python第三篇:python、flask关系映射
- 基于OpenGL编写一个简易的2D渲染框架-11 重构渲染器-Renderer
- 2017年12月HCNP考试易错题汇总
- 程序员必备的英语词汇表-持续更新
- 这些才是Win10真正好用之处:瞬对Win7无爱
- 【生信】全基因组测序(WGS)
- 跟踪状态(TASK_TRACED)
- usb xhci babble error问题解决
- 怎么配置android远程服务器地址,在 Android studio 中 配置Gradle 进行 “动态编译期间,指定 远程服务器地址 ,生成多个安装包”...
- lotus domino_保护IBM Lotus Domino Web服务器的安全:案例研究
- 滤波笔记三:无迹卡尔曼滤波(UKF)
- 如何防止Access数据库被下载- -
- 微信支付报错:用户传入的appid不正确,请联系商户处理
- java/php/net/python电影影评网站设计
- 【论文精读】resnet精读
热门文章
- php fpm的pool,php-fpm的pool、PHP慢执行日志、open_basedir、php-fpm进程管理
- Keras中predict()方法和predict_classes()方法的区别
- android水波纹动画制作,Framer之事件 | 如何制作安卓点击水波纹效果?
- oracle连接另外一个oracle,Oracle 连接 另一个Oracle数据库 服务器连接
- MVC是什么?优点?
- if(!ispostback)其用法和作用 什么时候该用?
- 《把时间当作朋友》之读后感
- Laravel学习笔记目录
- PS简单操作快捷键,上手快
- java indexeddb_indexedDB 基本使用