取石子游戲系列(1)

題目來自《編程之美》一排石頭的遊戲

N塊石頭排成一列,每塊石頭都有自己的固定位置,也就是相當於有自己的編號一樣。兩個玩家依次取石頭,每個玩家每次可以取其中任意一塊石頭,或者相鄰的兩塊,最後將所有石頭取走的玩家贏。

這個遊戲有必勝策略嗎?


取石子有很多變種,限定取石子的規則,就能產生不同的玩法。這類遊戲可以稱作博弈。博弈有一個基本概念是必勝狀態和必敗狀態。玩家想贏的話,就必須每次都使自己走完之後,對方處在必敗狀態。(這裏假設遊戲雙方都是足夠聰明的)。

對於博弈類題目,我們一般事先很難看出如何處理,這裏有個技巧就是:從最簡單的情況開始,逐漸增加遊戲的難道,這樣看看能不能找出一些規律來。


對於這題,我們從討論一些簡單的特例出發。進而逐漸掌握解題的規律:

(1)當N = 1或者N= 2時, 先手贏。

(2)當N=3時,先手可以取走編號爲2的石頭,這時,1和3是分開來的,後手無法一次取走,先手贏。

(3)當N=4時,先手取走中間編號爲2和3的石頭,這就轉化爲N=3時取走編號爲2的石頭一樣的情況了,先手贏。

(4)當N>4時,我們發現一個對稱性規律,先手如果想贏的話,就必須將石頭堆轉化爲對稱的兩部分,如果N爲偶數,取走中間兩塊,如果N爲奇數,取走中間一塊,這樣就轉化             爲對稱的兩部分。這時,先手可以採取策略——學後手走。後手在左邊一堆取任意位置的石子,先手則在右邊的一堆的石子中採用同樣的方式取走相同數量的石頭。這樣先手           也是必勝。


這樣看無論如何先手都是贏的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章