注册 登录
编程论坛 C++教室

一道IBM考题!

travelling 发布于 2007-11-06 23:20, 1429 次点击
     在一次打劫行动中,某海盗10个成员共得到100枚金币,现在海盗成员要求分这笔不义之财,按规定,海盗中等级最高的那个海盗制定分配方案(海盗成员中没有任何两人的等级相同),若该分配方案有不少于50%的赞成票,那么就实施该分配方案;否则将他仍入大海,继续让剩下的海盗中等级最高的制定分配方案,规矩同处理前一个海盗的方法相同。假设每个海盗都十分明智且都贪财,问第一个海盗制定怎么样方案能得到最多的金币,得到的金币数是多少?
8 回复
#2
aipb20072007-11-07 12:52
这么又成IBM的了

结果不重要,要理解过程:从下往上推理

只有一个人,等级最低(10号),一定得100
两个人,10和9 ,9无论怎样,10都不会同意,那么50%过不了,9必死
(这里有个问题,这些海盗喜欢杀人不?如果喜欢,那么如上,否则的话,9号可以选择把100金都给10号)

9号无条件支持8号,8号可以选择 100 0 0分法。
……

以此类推。
#3
aipb20072007-11-07 13:00
把“不小于”看成“大于”了

不过分析方法一样
#4
永夜的极光2007-11-07 13:51
假设10号最强,那么1~9号,偶数号的每人1个金币,剩下的96个金币,10号自己留着

[此贴子已经被作者于2007-11-7 13:52:27编辑过]


#5
jonc2007-11-07 17:12

同4楼的假设!
我以为把紧跟着他下面5个等级的海盗每人分1个金币,其他剩余的95个金币自己留着。
是不是会好一点
等待高手的答案

#6
aipb2OO72007-11-07 17:56

不是假设,而是推理

#7
ws1232007-11-08 22:05

打死不给等级最低(10号)1分钱,他永远都是反对的,所以不给他。

9号分只能 0 100 的分 这是10号唯一能同意的分发

如果剩8 9 10号,8号会分 99 1 0 , 9号就会同意

如果到7号分,只能分 0 99 1 0 。不这样分得不到两票,人财两空。

6号分肯定会给7号9号各1金。6号分法:98 1 0 1 0

5号分因为8 10号永远反对,剩余3票 6 7 9号,如果要拉拢票数必须的分法是:0 98 1 0 1 0

4号分时就有4个关键票,5,6,7,9号,4号需要3张赞成票,又要得最多的钱数的分法:97 1 0 1 0 1 0

3号分要拉拢4张票才可以,100金减去5,7,9的3金等于97金都得给4号,分法: 0 97 1 0 1 0 1 0

2号分也是4票才可以,2号可以这样分 : 96 1 0 1 0 1 0 1 0

等级最高的需要5票才行,这时的10号最多可拿100金,8号最多99金,6号最多98金,4号最多97金,2号最多可拿96金,剩下的3,5,7,9都多拿1金。

钱是肯定拿不上了,想活命只能 0 96 1 0 1 0 1 0 1 0 的分

[此贴子已经被作者于2007-11-8 22:20:48编辑过]

#8
ws1232007-11-08 22:07

补充:这的海盗要钱又要命就这样来

[此贴子已经被作者于2007-11-8 22:10:00编辑过]

#9
ws1232007-11-08 22:15
以下是引用永夜的极光在2007-11-7 13:51:16的发言:
假设10号最强,那么1~9号,偶数号的每人1个金币,剩下的96个金币,10号自己留着

你这里假设10号最强 ,所得金币的人是 2 4 6 8 只有4票,还有5个人肯定反对

如果连10自己也算一票,那么2号肯定不会同意的这样的分发。

所以这样分10号必死无疑

1