博弈論之Nim問題

通常的Nim遊戲的定義

        有若干堆石子,每堆石子的數量都是有限的,合法的移動是“選擇一堆石子並拿走若干顆(不能不拿)”,如果輪到某個人時所有的石子堆都已經被拿空了,則判負(因爲他此刻沒有任何合法的移動)。

L.Bouton 提出瞭如下定理,從而徹底地解決了 Nim 問題:

        異或和值爲零則後手勝,否則先手勝。
理解:首先可以將每個石子的個數分成多個2的指數倍的數之和,然後將這些數按位異或,結果爲0 ,就是必敗。

           異或結果爲0即代表兩個數相等。

           可以理解爲,後拿的人按照先拿的人的石子個數來拿(選擇好堆數保證最優解),最後後拿的人恰好拿完,所以先拿的人就敗。


基礎題:http://poj.org/problem?id=2234

題解:http://blog.csdn.net/nininicrystal/article/details/47416303

變形:http://acm.hdu.edu.cn/showproblem.php?pid=4315

題解:http://blog.csdn.net/nininicrystal/article/details/47606655

發佈了68 篇原創文章 · 獲贊 9 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章