292.Nim游戏

桌子上有一堆石头。

轮流进行自己的回合, 你作为先手 。

每一回合,轮到的人拿掉 1 - 3 块石头。

拿掉最后一块石头的人就是获胜者。

假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回true;否则,返回false

此游戏有制胜方法。

当石头数量为4k+1(k为自然数)时,率先拿走1块石头,之后无论对方拿走几块,保证一回合内拿走石头数量和为4。即对方拿1块,自己拿3块;对方拿2块,自己拿2块;对方拿3块,自己拿1块。这样可以保证赢。

当石头数量为4k+2(k为自然数)时,率先拿走2块石头,之后无论对方拿走几块,保证一回合内拿走石头数量和为4。可以保证赢。

当石头数量为4k+3(k为自然数)时,率先拿走3块石头,之后无论对方拿走几块,保证一回合内拿走石头数量和为4。可以保证赢。

当石头数量为4k(k为整数)时,不能保证赢。

c 复制代码
bool canWinNim(int n) { 
    return n % 4; 
}
python 复制代码
class Solution:
    def canWinNim(self, n: int) -> bool:
        return n % 4 != 0
相关推荐
夏鹏今天学习了吗4 小时前
【LeetCode热题100(74/100)】跳跃游戏
算法·leetcode·游戏
郝学胜-神的一滴4 小时前
使用Qt OpenGL开发俄罗斯方块:从零到一实现经典游戏
c++·qt·程序人生·游戏·设计模式·系统架构·图形渲染
夏鹏今天学习了吗5 小时前
【LeetCode热题100(75/100)】跳跃游戏 II
算法·leetcode·游戏
星光一影5 小时前
合成植物大战僵尸 安卓原生APP Cocos游戏 支持Sigmob
android·游戏·php·html5·web app
元亓亓亓5 小时前
LeetCode热题100--45. 跳跃游戏 II--中等
算法·leetcode·游戏
关于不上作者榜就原神启动那件事5 小时前
游戏音效脚本添加
游戏
JIngJaneIL5 小时前
基于java+ vue畅游游戏销售管理系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·游戏
顾安r6 小时前
12.17 脚本网页 创意导航
java·linux·前端·游戏·html
zore_c6 小时前
【C语言】贪吃蛇游戏超详解(包含音效、颜色、封装成应用等)
c语言·数据结构·笔记·stm32·游戏·链表
chao1898441 天前
基于C# WinForm实现的仿微信打飞机游戏
游戏·微信·c#