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

心得:这个题一开始是没有思路的,可能是因为没有完全明白题意。首先一定要知道你和你的朋友都非常聪明,也就是说你会尽量避免让你的朋友赢,尽量让自己赢,你的朋友也是这么想的。但是如果只有四块石头,无论你怎么聪明,你都不可能赢,但是五块就是可能的,六块也是如此,但是八块又不行了,因为如果是八块,无论你一开始拿走几块无没啥用,你的朋友肯定有办法不让你赢。这道题目很有意思。

猜你喜欢

转载自blog.csdn.net/cuicheng01/article/details/82726262