有 n 個石子,兩個人輪流取石子,規定每次至少取乙個,最多取 m 個。取走 最後乙個的人獲勝。 稱先取的人為先手,後取的人為後手。
請問當 n 與 m 滿足什麼條件時,先手有必勝策略。當 n 與 m 滿足什麼條件時, 後手有必勝策略。
你可以寫乙個程式進行問題求解,你也可以直接進行推理。
我們從最簡單的情景開始分析
當石子有1~m個時,毫無疑問,先手必勝
當石子有m+1個時,先手無論拿幾個,後手都可以拿乾淨,先手必敗
當石子有m+2~2m時,先手可以拿走幾個,剩下m+1個,先手必勝
我們不難發現,面臨m+1個石子的人一定失敗。
這樣的話兩個人的最優策略一定是通過拿走石子,使得對方拿石子時還有m+1個
我們考慮往一般情況推廣
先手會首先拿走rr個,接下來假設後手拿走xx個,先手會拿走m+1−x個,這樣博弈下去後手最終一定失敗
假設先手拿x個,後手一定會拿m+1−x個,這樣下去先手一定失敗
#includeint main()
參考: 巴什博奕(Bash Game)
巴什博弈 bash game,同餘理論 只有一堆n個物品,兩個人輪流從這堆物品中取物,規定每次至少取乙個,最多取m個。最後取光者得勝。顯然,如果n m 1,那麼由於一次最多只能取m個,所以,無論先取者拿走多少個,後取者都能夠一次拿走剩餘的物品,後者取勝。因此我們發現了如何取勝的法則 如果n m 1 ...
巴什博奕詳解
只有一堆n 個石子,兩個人輪流從這堆石子中取物,規定每次至少取乙個,最多取 m 個。最後取光者得勝。兩人均採用最優方案。假設雙方分別為a,b 且指定a為先手。如果是 n m 的情況下 先手a一次即可取完,a必勝。故重點討論 n m 的情況 當 n m 1 時 因為a至多取 m 顆,最少取 1 顆 在...
NYOJ 巴什博奕 bash game
時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 一天,tt在寢室閒著無聊,和同寢的人玩起了取石子遊戲,而由於條件有限,他 她們是用旺仔小饅頭當作石子。遊戲的規則是這樣的。設有一堆石子,數量為n 1 n 1000000 兩個人輪番取出其中的若干個,每次最多取m個 1 m 100...