当前位置: 首页 > article >正文

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为整数)时,不能保证赢。

bool canWinNim(int n) { 
    return n % 4; 
}
class Solution:
    def canWinNim(self, n: int) -> bool:
        return n % 4 != 0

http://www.kler.cn/a/229005.html

相关文章:

  • ToDesk设置临时密码和安全密码都可以当做连接密码使用
  • 017:推理框架为什么可以加速AI推理?
  • 国产编辑器EverEdit - 复制为RTF
  • Sentinel配置流控规则详解
  • Axios封装一款前端项目网络请求实用插件
  • 数仓建模:如何设计可扩展性较好的同环比计算模型?
  • React16源码: React中event事件监听绑定的源码实现
  • undefined symbol: _ZN5boost15program_options22error_with_option
  • 类银河恶魔城学习记录1-6 Flip基本设置源代码 P33
  • 网络原理TCP/IP(5)
  • ensp实验合集(二)
  • 创建自己的Hexo博客
  • 第8章 多线程
  • Postgresql体系结构
  • 【PTA函数题】6-2 约瑟夫环之循环链表
  • Hack The Box-Challenges-Misc-M0rsarchive
  • 【数据结构与算法】(7)基础数据结构之双端队列的链表实现、环形数组实现示例讲解
  • echarts使用之柱状图(一)
  • LeetCode--代码详解 2.两数相加
  • linux+rv1126/imx6ull:opencv静态库交叉编译(手把手百分百成功)
  • 每周AI新闻(2024年第5周)ChatGPT等多应用登陆 Vision Pro | 字节Coze国内版上线等
  • 小程序中picker多列选择器
  • Git工作中常用命令
  • 【Shell的运行原理以及Linux当中的权限问题】
  • Web后端:CSRF攻击及应对方法
  • Profinet转CANopen主站网关与堡盟编码器通讯案例