leetcode之Nim Game(292)

題目:

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

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

示例:

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

Python代碼:

class Solution(object):
    def canWinNim(self, n):
        return n % 4 != 0

心得:這個題一開始是沒有思路的,可能是因爲沒有完全明白題意。首先一定要知道你和你的朋友都非常聰明,也就是說你會盡量避免讓你的朋友贏,儘量讓自己贏,你的朋友也是這麼想的。但是如果只有四塊石頭,無論你怎麼聰明,你都不可能贏,但是五塊就是可能的,六塊也是如此,但是八塊又不行了,因爲如果是八塊,無論你一開始拿走幾塊無沒啥用,你的朋友肯定有辦法不讓你贏。這道題目很有意思。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章