博弈論之Nim Game

Nim Game這個游戲是:

有一堆石頭疊在一起。然后兩個人互相remove石頭from top. 一個人一次可以拿1--3塊石頭。

whoever remove the last pieces win. 游戲由我方開始。

這個題的level是一個Easy,但是我很可恥的沒有做出來?!净揪褪窍肓?0秒就放棄了。。?!?/p>

正確的思考邏輯是: 什么情況我們會輸? 假設最簡單的case, 4個石頭。 我先拿1--3塊石頭。 發現拿不完,但是剩下的1--3塊石頭剛好對手可以一次性拿走。 這種情況我們贏不了。

那如果5塊石頭呢?我一次拿1塊, 對手就會只剩4塊石頭。 這時候我們根據4塊石頭的case得出結論,我一定能贏。 如果6塊石頭呢? 我一次拿2塊石頭,又讓情況回到了4塊石頭的水平。

所以這個pattern 看下來,如果我有辦法讓對手那輪只剩4個石頭,我就贏定了,否則我就輸定了。到這里都還屬于比較簡單的, 但是怎么代碼怎么實現這個判斷呢?

我覺得從這里還是看不出來。。。

需要舉更多的例子來看出。 【最重要的部分】假設8塊石頭,我一次可以拿1--3塊石頭。但是對手可以通過調整數量使下一次輪到我的時候 只剩4個石頭,所以8個石頭的case 我是一定輸的。得出一個結論,誰輪到8個石頭誰輸。 那12個石頭呢? 假設我先,我能拿1-3個,對手可以逼迫我回到8個石頭的情況,我還是輸。所以只要是4的倍數,我就贏不了。

return(n%4!=0);

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 好萊塢大片中肉末橫飛漫天濃煙的場面震撼嗎?這時如果沒有高能量的音樂烘托氣氛,簡直就像看毛片卻把聲音關掉了。來看看在...
    izan閱讀 500評論 2 3
  • 這是一種極至的享受吧, 我裹著暖暖的睡袍,靜靜地坐在窗前, 看落日的褪去。 耳邊是清新的鋼琴曲,回旋在我的房間,有...
    路還長天會亮閱讀 178評論 0 2