1. 程式人生 > >【LeetCode】292. Nim Game

【LeetCode】292. Nim Game

292. Nim Game

Problem

你和朋友在玩一個遊戲,桌上有一堆石頭,你倆每次輪流拿走1到3個石頭,拿走最後剩餘石頭的就是贏家。你先開始拿。
你倆都很聰明,會選最佳策略。寫一個方法,初始有多少個石頭,你會贏。

Example

輸入:4
輸出:false
解釋:不管你拿1,2,3個石頭,剩下3,2,1個石頭都會被朋友一次性拿光,所以輸。

Solution

由例子可知,只剩4個的時候拿的人必輸。
剩5個,你拿1個,朋友必輸。
剩6個,你拿2個,朋友必輸。
剩7個,你拿三個,朋友必輸。
剩8個,不管拿幾個,朋友都能讓剩下的石頭到達4個,你必輸
所以規律就是,石頭個數為4的倍數的時候你去拿必輸,所以不是4的倍數才能贏

class Solution {
    public boolean canWinNim(int n) {
        return n % 4 != 0;
    }
}