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
相关推荐
红红大虾2 小时前
前台小姐姐10分钟就能掌握的Defold游戏引擎需要的lua入门知识
游戏
wanhengidc3 小时前
使用云手机能否给企业降本增效
运维·网络·科技·游戏·智能手机
ue星空17 小时前
月2期学习笔记
学习·游戏·ue5
wanhengidc17 小时前
云手机运行流畅,秒开不卡顿
运维·网络·科技·游戏·智能手机
songx_9920 小时前
leetcode9(跳跃游戏)
数据结构·算法·游戏
wanhengidc1 天前
什么是云手机?
运维·网络·安全·游戏·智能手机
私人珍藏库1 天前
[吾爱原创] 【游戏】王富贵的果菜园
游戏
曼巴UE52 天前
UE5 制作游戏框架的部分经验积累(持续更新)
游戏·ue5
Buling_02 天前
游戏中的设计模式——第一篇 设计模式简介
游戏·设计模式
lingran__2 天前
C语言制作扫雷游戏(拓展版赋源码)
c语言·算法·游戏