硬幣遊戲 Project Euler 232

2022-04-01 02:59:43 字數 1970 閱讀 8043

原帖:

project euler

上最近的題目都還比較意思,來看看前些天剛剛新鮮出爐的一道題:

problem232

,大意如此:說,有這樣乙個硬幣遊戲,需要兩個玩家參與,我們不防分別將他們稱為玩家

1和玩家

2。遊戲規則如下:兩個玩家輪流來擲硬幣。玩家

1每次只能擲一次,若是正面向上,則得

1分,否則不得分。玩家

2每次可以選擇拋擲硬幣的次數t(

t>0

),若每次都是正面向上,則得分為2的

(t-1)

次方,否則不得分。首先由玩家

1先擲,先得分超過

100者為贏家。現在問:假設玩家

2每次都選擇最優的投擲次數,則他贏的概率是多少?當然,每次的投擲都是完全公正和隨機的,否則要來個劉謙,這概率就沒法算了。

首先,可以憑直覺猜猜這個概率大概是多少。毫無疑問,大於

1/2是肯定的,因為玩家

2至少可以選擇每次都只擲一次,在得分目標(

100分)相對較大的時候,後擲的劣勢可以忽略。嗯,好像沒有其它線索了,不太好猜啊,還是老老實實算吧。

像這種算概率的題通常都比較麻煩,雖然很容易想到思路,但很難得到準確的答案。比如在這裡,乙個很容易想到的思路是動態規則。設

p ( i, j )

是當玩家1得到

i分,玩家2得到

j分,並且此時輪到玩家

2拋擲時玩家

2獲勝的最大概率。從後往前推,先看

p(99, 99)

。此時,玩家

2選擇的拋擲次數肯定為

1,得一分就夠了,多了也浪費,還降低了得分的概率。當玩家

2丟擲硬幣後,得到兩種結果:得

1分,不得分。得

1分就直接贏了,而不得分就把主動權交給了玩家

1,而當玩家

1再次丟擲後,又得到兩種結果:得

1分,則玩家

1贏得遊戲,不得分,則整個局勢又回到

p(99,99)

的初始狀態。上述過程有表示式如下:p(

99,99)

= 1/2 +

(1/2 * 1/2

)* p(99

,99)解上述方程,可得

p(99, 99)

得2/3

。注意到,上述表示式是乙個邊界情況,因為兩個玩家都是再得一分即可獲得勝利,現在推導乙個更一般的狀態轉移方程。設在該輪玩家

2選擇的投擲次數為

n, 這樣可以得的分數s為

2^(n-1)

,得分概率o 為

1/2^(n+1)

。則有:p'(

i, j

)= o*(1/2)*p(i, j+s) + o*(1/2)*p(i+1, j+s) + (1-o)*(1/2)*p(i+1,j) + (1-o)*(1/2)*p'(i,j)

注意到上邊的式子兩邊都有 p

'( i, j )

,所以是個隱式表示式。(昨天寫漏了,加上一句)列舉所有使得(s+j)小於或者剛好大於100的n,計算上式中的p'(i, j),則有p(i, j)為這些p'(i, j)的最大值。當然,玩家2也可以選擇令(s+j)遠遠大於100的投擲次數n, 但比較顯然的是這樣得到的p』(i, j)不會是最大的,比如前面所說的,在p(99, 99)的局勢中玩家2明顯不會選擇超過1的投擲次數。有的地方只所以乘了二分之一是因為狀態轉移還需要玩家

1的過渡,因為我們的狀態定義是在當輪到玩家

2拋擲時玩家2

獲勝的最大概率。為了表達方便,沒有考慮一些邊界的情況。然後按照上面的轉移方程編寫程式就行了,這道題的答案為:

0.83648556.

這個答案是不是比用直覺猜的要高些呢。(我是猜的大概在

2/3左右,誤差不小),這首題其實非常適合用來做面試題:生動有趣,即不是太簡單,也不是太難(比起以其相似的

poj1074

算是小烏見大烏了),雖然比較容易想到演算法,卻也不容易一次性算對。爺爺的,要是本人以後有榮幸當上面試官,一定要出出這道題。

1381硬幣遊戲

基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 有乙個簡單但是很有趣的遊戲。在這個遊戲中有乙個硬幣還有一張桌子,這張桌子上有很多平行線 如下圖所示 兩條相鄰平行線之間的距離是1,硬幣的半徑是r,然後我們來拋硬幣到桌子上,拋下之後硬幣有時候會和一些直線相交 相切的情況...

1381 硬幣遊戲

1381 硬幣遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 5 難度 1級演算法題 有乙個簡單但是很有趣的遊戲。在這個遊戲中有乙個硬幣還有一張桌子,這張桌子上有很多平行線 如下圖所示 兩條相鄰平行線之間的距離是1,硬幣的半徑是r,然後我們來拋硬幣到桌子上,拋下之後硬幣有時候會和一些...

硬幣遊戲 期望

有乙個簡單但是很有趣的遊戲。在這個遊戲中有乙個硬幣還有一張桌子,這張桌子上有很多平行線 如下圖所示 兩條相鄰平行線之間的距離是1,硬幣的半徑是r,然後我們來拋硬幣到桌子上,拋下之後硬幣有時候會和一些直線相交 相切的情況也算是相交 有時候不會。請你來計算一下拋一次硬幣之後,該硬幣和直線相交數目的期望。...