1. 程式人生 > >Leetcode--------292. Nim遊戲

Leetcode--------292. Nim遊戲

你和你的朋友,兩個人一起玩 Nim遊戲:桌子上有一堆石頭,每次你們輪流拿掉 1 - 3 塊石頭。 拿掉最後一塊石頭的人就是獲勝者。你作為先手。

你們是聰明人,每一步都是最優解。 編寫一個函式,來判斷你是否可以在給定石頭數量的情況下贏得遊戲。

示例:

輸入: 4
輸出: false 
解釋: 如果堆中有 4 塊石頭,那麼你永遠不會贏得比賽;
     因為無論你拿走 1 塊、2 塊 還是 3 塊石頭,最後一塊石頭總是會被你的朋友拿走。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

每一步都是最優解,那麼對於先手來說當n=4的時候,是必輸的,即n=4 是一個關鍵點,而由n=4 一步可以到達的點就是必勝點,也就是說 4n+1,4n+2,4n+3是必勝點。

同樣對於4的倍數,也是必輸的點,因為就是多了幾次4的迴圈。

 關鍵表示式:  必輸點可以一步到達的點就是必勝點。  題目中4的倍數的點就是必輸點,即為關鍵點。

AC:

class Solution {
public:
    bool canWinNim(int n) {
         return (!(n%4==0))

;
    }
};