給定n堆石子,每次每人能從一堆石子中取若干個石子(不能不取),最後不能取石子者敗
對於這個遊戲,我們要判斷的是,給定局勢下,先手者勝還是敗
設先手勝的局勢為n-postion,先手敗的局勢為p-postion
可以移動到p-postion的局勢叫做n-postion,只能移動到n-postion的局勢叫做p-postion。
1、只有一堆的情況下先手勝
2、只有兩堆
a、數目相等的局勢,先手敗,因為不管先手怎麼取,後手都能在另一堆中複製先手的取法
b、數目不相等的局勢,先手勝,先手可以在石子多的那一堆取走一定的石子,使得兩堆的石子數相等,然後參考情況a分析,可知先手勝
3、兩堆以上的情況。將局勢分為兩個子局勢x,y
那麼來分析一下局勢的加法與異或之間的關係,
將局勢分為兩個子局勢n和m,如果兩個子局勢相同,則表示n==m,將局勢如果可以先手勝利,成為n勝或m勝
局勢異或等於0,表示先手敗,不等於0,表示先手勝
若n勝m勝 如果n==m ,n^m==0, 如果n!=m, n^m!=0 ,說明該情況下的局勢加法滿足異或
若n勝m負 先手者在n局勢先手獲得勝利,然後使得後手者在m局勢先手,獲得失敗,所以先手勝 n!=0,m==0, n^m!=0,說明該情況下的局勢加法滿足異或
若n負m勝 同上
若n負m負 先手者在n局勢取得失敗,然後又在m局勢先手取得使得,所以最終失敗。 n==0,m==0,n^m==0, 說明該情況下的局勢加法滿足異或
所以nim遊戲的判斷是否先手勝就變成了判斷n堆石子的異或是否不等於0
那麼怎麼獲得必勝策略是怎麼走的呢?即將某堆得石子取走k個,使得的石子異或等於0
設有n堆石子,a1,a2,...ai...an
對於ai,取得另外n-1堆得石子的異或s
如果 ai > s , 那麼k= ai - s, 這樣子 (ai-k)==s 即 ai^s==0
博弈 Nim遊戲
nim遊戲是博弈論中最經典的模型,它又有著十分簡單的規則和無比優美的結論。nim遊戲是組合遊戲 combinatorial games 的一種,準確來說,屬於 impartial combinatorial games 以下簡稱icg 滿足以下條件的遊戲是icg 可能不太嚴謹 1 有兩名選手 2 兩...
NIM遊戲 博弈
1.尼姆博弈 n堆石子,每堆的數量a1,a2,a3.an,一方取完後石子個數為0則該方獲勝,問先手是否必勝 if ans a1 a2 a3 an 0 先手必勝 else 先手必輸 延伸1 在此問基礎上新增乙個集合,集合內的數字是每次操作可取的石子個數,每次從一堆中取,最後無法取者判輸 對每堆石子算得...
博弈 Nim遊戲
1069 nim遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 0 難度 基礎題 有n堆石子。a b兩個人輪流拿,a先拿。每次只能從一堆中取若干個,可將一堆全取走,但不可不取,拿到最後1顆石子的人獲勝。假設a b都非常聰明,拿石子的過程中不會出現失誤。給出n及每堆石子的數量,問最後誰...