海盜分金的故事
5個海盜搶到了
100顆寶石,每一顆都一樣的大小和價值連城。
他們決定這麼分:
1。抽籤決定自己的號碼(1,
2,3,
4,5)
2。首先,由
1號提出分配方案,然後大家
5人進行表決,當且僅當半數和超過半數的人同意時,按照他的提案進行分配,否則將被扔入大海喂鯊魚。
3。如果
1號死後,再由
2號提出分配方案,然後大家
4人進行表決,當且僅當半數和超過半數的人同意時,按照他的提案進行分配,否則將被扔入大海喂鯊魚。
4。依次類推
......
問題:第乙個海盜提出怎樣的分配方案才能夠使自己的收益最大化
),下面就是演算法總結,目的就是讓自己得到1半或以上的票。
演算法:從後向前來推理,
i 海盜分為1-5號,如果只剩下第4,5號海盜兩個人分配,4號則給自己投一票》=50%,條件成立,自己獨吞總金幣,5號什麼也得不到。
ii 3號推出了4號的方案,發一枚金幣給5號,拉一票,因為5號知道在4號的方案中自己得不到所以投3號一票,加上3號投自己的一票》=50%條件成立,3號獲得100-1=99枚金幣。
iii 2號得出3號方案,給4號一枚金幣拉一票,同理,2號票數(1+1)/4>=50%條件成立,獲得100-1=99枚金幣。
iv 1號推斷2號方案中,3號和5號不能獲得金幣,於是給他們各一枚金幣則拉兩票,(1+1+1)/5>=50%條件成立,自己獲得100-1-1=98枚金幣。
從上面的推論可以看出,從後向前依次推,如果上一次分配中獲得金幣的海盜本次分配中將不能獲得金幣。
using
system;
class
pirateassigngold
else
else
}}
if((
double
)ticket/(
double
)joinnum
<
0.5)
//總得票數/此次加入分配的海盜數》=50%則此次分配成立,否則失敗
}for
(intn=
1;n<=5;n
++)獲得金幣數
",n,poke[n]);
}
console.readkey();}}
海盜分金2
數學的邏輯有時會導致看來十分怪異的結論。一般的規則是,如果邏輯推理沒有漏洞,那麼結論就必定站得住腳,即使它與你的直覺矛盾。1998年9月,加利福尼亞州帕洛阿爾托的stephen m.omohundro寄給我一道難題,它恰好就屬於這一類。這難題已經流傳了至少十年,但是omohundro對它作了改動,使...
海盜分金幣
首先,把這個問題轉換為乙個遞迴的演算法問題,描述為,如果我知道了上一家的分法,我如何能夠使我的利益最大化呢?現假定有5個人分,金幣總數是100,那麼第二個人的分法是1,1,0,98,那麼第乙個人需要的就是拉攏分的最少的兩人,然後給他們多乙個金幣,這樣就可以取得他們的支援了,所以第乙個人的分法是2,0...
海盜分金幣
問題描述 有n個海盜,得到了m個金幣。他們決定將之瓜分。分的方法是站成一排,從1號到n號海盜依次提出方案。如果提出的方案得到的支援人數比例超過q 0 q 100 那麼就通過方案,進行分配,提出方案的海盜也有投票權。否則就把提出方案的人扔到海浬喂鯊魚。海盜都是精明的,他們能夠分析出如何最大化自己的利益...