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
相关推荐
一起养小猫29 分钟前
Flutter for OpenHarmony 实战:别踩白方块游戏完整开发指南
flutter·游戏
星空露珠1 小时前
速算24点所有题库公式
开发语言·数据库·算法·游戏·lua
晚霞的不甘5 小时前
Flutter for OpenHarmony从零到一:构建《冰火人》双人合作闯关游戏
android·flutter·游戏·前端框架·全文检索·交互
ujainu6 小时前
Flutter + OpenHarmony 实战:《圆环跳跃》——完整游戏架构与视觉优化
flutter·游戏·架构·openharmony
ujainu6 小时前
Flutter + OpenHarmony 实战:从零开发小游戏(一)——主菜单与最高分存储
flutter·游戏·app
ujainu6 小时前
Flutter + OpenHarmony 实战:从零开发小游戏(三)——CustomPainter 实现拖尾与相机跟随
flutter·游戏·harmonyos
暮志未晚Webgl7 小时前
UE5使用CameraShake相机震动提升游戏体验
数码相机·游戏·ue5
星空露珠8 小时前
速算24点检测生成核心lua
开发语言·数据库·算法·游戏·lua
中二病码农不会遇见C++学姐8 小时前
《文明6》Leaders.xml 文件标签解析指南
游戏
你好!蒋韦杰-(烟雨平生)9 小时前
OpenGL
c++·数学·游戏·3d