Leetcode練習(Python):第292題:Nim 游戲:你和你的朋友,兩個人一起玩 Nim 游戲:桌子上有一堆石頭,每次你們輪流拿掉 1 - 3 塊石頭。 拿掉最后一塊石頭的人就是獲勝者。你作為先手。


題目:

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

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

示例:

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

思路:

一開始看這道題很懵,每個人都是聰明人,每一步都是最優解,在有些情況下,可能會出現可能是輸也可能是贏的情況。針對這道題,將自己代入,自己想要贏,在別人會輸的情況下找自己的最優解。距離自可以得出,如果是4的整數倍贏不了,其他都可以贏。

程序:

class Solution:
    def canWinNim(self, n: int) -> bool:
        if n == 0:
            return False
        result = bool(n % 4)
        if result == 0:
            return False
        elif result != 0:
            return True

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM