1. 程式人生 > >【LeetCode 簡單題】74-Nim遊戲

【LeetCode 簡單題】74-Nim遊戲

宣告:

今天是第74道題。你和你的朋友,兩個人一起玩 Nim遊戲:桌子上有一堆石頭,每次你們輪流拿掉 1 - 3 塊石頭。 拿掉最後一塊石頭的人就是獲勝者,你作為先手。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博主的相關權益,請聯絡我刪除

(手動比心ღ( ´・ᴗ・` ))

正文

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

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

示例:

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

解法1。贏的要點是你拿完之後還剩4個石頭,這樣無論對手怎麼拿最後都是贏面,但是人只能拿1、2或3個石頭,所以如果一開始的石頭數量是4的倍數,無論如何拿完都不會只剩4個,所以會輸。(衍生一下,如果人能拿1、2、3或4個石頭)

執行用時: 24 ms, 在Nim Game的Python提交中擊敗了93.51% 的使用者

class Solution(object):
    def canWinNim(self, n):
        """
        :type n: int
        :rtype: bool
        """
        return n%4 != 0

結尾

解法1:https://blog.csdn.net/qq_34364995/article/details/80715432