Pyhthon实现"Nim游戏"的一种方法

你正在和你的朋友,一共两人在玩Nim游戏:桌上有一个石碓,每一次只能移除1-3个石头。移除最后一个石头的为赢家。你是游戏开始之后第一个移动石头的人。

你和你的朋友都是很聪明的人,每一次都会选择最优的策略。写一个函数判断在给定石头个数的前提下你能否赢得比赛

Example:

Input: 4
Output: false 
Explanation: If there are 4 stones in the heap, then you will never win the game;
             No matter 1, 2, or 3 stones you remove, the last stone will always be 
             removed by your friend.

1:本题是一道规律题

最后一次对手有的石头应该是4个,这样不管他怎么拿你都会赢,所以为了确保我能赢,我每次拿了之后剩下的石头数是4的倍数
则一开始石头数不是4的倍数(分析参考他人)

def canWinNim(self, n):
        """
        :type n: int
        :rtype: bool
        """
        # if n % 4 == 0:
        #     return False
        # else:
        #     return True
        return False if n % 4 == 0 else True   #与注释部分功能相同

算法题来自:https://leetcode-cn.com/problems/nim-game/description/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值