程式設計之美 1 12 nim 2

2021-06-07 14:40:25 字數 459 閱讀 2829

參考:

有若干堆石頭,a,b分布依次取,一次只能選擇一堆,從這堆中選擇大於0的石頭,問:1,如果最後取光石頭的人獲勝,a在什麼情況下獲勝?2,如果最後取光石頭的人失敗,a在什麼情況下獲勝?

1. 在規則1下,先手獲勝的情況,在規則2下先手同樣獲勝

2. 規則1和規則2的取法不一樣。

設當石頭出現(1,1,1,...,x),x>1的情況下,稱進入小卡區域。

規則1:

先手面臨的局面必須是xor(m1,m2,..,m3)!=0才能保證,先手獲勝;此時,先手必須調整堆,使得xor(m1,m2,..,m3)=0;這樣就能保證先手最後獲勝。

規則2:

先手面臨的局面必須是xor(m1,m2,..,m3)!=0才能保證,先手獲勝;此時,先手必須調整堆,使得xor(m1,m2,..,m3)=0;這樣就能保證先手最後獲勝。

但是有乙個問題,如何保證當局面進入小卡區域時,正好該先手取?

程式設計之美NIM(2)遊戲分析擴充套件問題

問題 有n塊石頭和兩個玩家a和b,玩家a先將石頭隨機分成若干堆,然後按照baba.的順序不斷輪流取石頭,能將剩下的石頭一次取光的玩家獲勝,每次取石頭時,每個玩家只能從若干堆石頭中任選一堆,取這一堆石頭中任意數目 大於0 個石頭。請問 玩家a要怎樣分配和取石頭才能保證自己有把握取勝?如果石頭的個數n為...

程式設計之美 NIM遊戲與NIM擴充套件遊戲的討論及解

程式設計之美上面有個nim的遊戲,規則如下 有n堆石頭,兩個人輪流從中取,一次只能在一堆中取,至少取乙個,最多把這一堆取完,取得最後乙個石頭的人勝利,問誰有必勝策略。解 設這n堆石頭的個數分別是x1,x2 xn,設f x x1 x2 x3 xn。如果f x 0則後取的獲勝,否則,先取的獲勝。證明 如...

程式設計之美 nim 3 的遞迴解法

程式設計之美1.13 nim 3 兩對石頭的遊戲 一種遞迴解法 package main import fmt 兩堆石頭,假定 n m type pair struct var mapsafe map pair bool func main func nim n,m int bool if n m ...