LeetCode第 292 题:Nim游戏(C++)

2023-11-14

292. Nim 游戏 - 力扣(LeetCode)

剩下4块的时候,如果轮到你,那么你必输。

先简单推一下,如果第n块的时候轮到你:
n == 5 : 必胜(拿1块)
n == 6 : 必胜(拿2块)
n == 7 : 必胜(拿3块)
n == 8: 必败(无论我拿几块,对方都可以将我逼到4的位置)
n == 9 : 必胜(拿1块,让对方走到8)

可以看到当n % 4 == 0的时候,我必败,其他时候必胜。比如12的时候,无论我拿几块,对方都可以将我置于n == 8的境地,此时也是无论我拿几块,对方都可以将我置于4的境地。假设我拿x个,对方就拿4-x个,我就一直处于必败的境地。

更一般的,巴什博奕,n%(m+1)!=0时,先手总是会赢

class Solution {
public:
    bool canWinNim(int n) {
        return n % 4 != 0;
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LeetCode第 292 题:Nim游戏(C++) 的相关文章

  • C++ 原始指针、shared_ptr、unique_ptr分别在什么场景下使用

    开发中一直萦绕我的一个困惑是 智能指针和原始指针什么场景怎么用 现在终于有了答案 2020 03 22 增加了unique ptr指针的使用 1 智能指针天生负责对象生命期管理 所以生命期对象全都由unique ptr和shared ptr
  • Redis详解

    1 键值数据库的基本架构 不同键值数据库支持的key类型一般差异不大 而value类型则有较大差别 我们在对键值数据库进行选型时 一个重要的考虑因素是它支持的value类型 例如 Memcached支持的value类型仅为String类型
  • C语言小游戏——贪吃蛇

    贪吃蛇 1 游戏界面 2 游戏说明 3 程序源代码 1 游戏界面 2 游戏说明 贪吃蛇游戏按键说明 按方向键上下左右 可以实现蛇移动方向的改变 3 程序源代码 代码如下 示例 include
  • unity 3D RPG高级教程(十四)

    目录 声明 1 QuestGiver 控制任务对话显示 2 GiveRewards 拿到任务奖励 3 SaveQuestManager 保存任务数据 声明 本教程学习均来自U3D中文课堂麦扣老师 1 QuestGiver 控制任务对话显示

随机推荐

  • 层数最深的叶子节点之和

    题目描述 给你一棵二叉树的根节点 root 请你返回 层数最深的叶子节点的和 解题思路 使用深度优先搜索 全局维护两个变量sum 总和 以及maxdeep 最大深度 对于遍历到的节点有三种情况 1 此节点深度不够 不进行操作 遍历它的子节点
  • 浏览器地址栏输入url回车后发生了什么

    面试第一天 面试官问我 浏览器输入url后怎么进行请求的 我一想 诶 回车不就向后台发送请求就行了吗 卒 当按下回车后发生了以下步骤 1 ip地址解析寻址 2 建立tcp连接 三次握手 3 发送一个http请求 4 服务器处理并返回响应请求
  • 机器人操作系统ROS(22)ROS安装opencv

    应该是再安装ROS时 已经默认安装opencv 但是有时候需要的环境不同 下面两种方法 第一种是 再安装一个版本 两个版本共存 第二种是 删除再安装 还有一种是Linux下安装OpenCV4 适用于Ubuntu等 还有一个知乎版本用树莓派4
  • Python——os.mkdir()在指定路径下创建文件夹 + 路径的连接理解

    引子 我在用路径连接函数 os path join 时发现 其连接的各级目录必须首先存在 才可以连接 也即是说连接的各文件夹必须首先存在 因为个各层级的目录以文件夹的形式表现出来 基于此 我开始研究如何先在指定路径下创建文件夹 1 在指定路
  • linux批量替换文件夹中所有文件内容

    记录一下 以防自己忘了 替换单个文件 sed i s 旧字符串 新字符串 g 文件名 替换整行 sed i 旧字符串 c 新字符串 文件名 替换文件夹中所有文件内容 sed i s 旧字符串 新字符串 g grep 旧字符串 rl 目录
  • MIPI协议之CSI2和DPHY

    目录 1 概论 2 CSI2协议 2 1 CSI 2数据帧格式 3 D PHY 3 1 数据通道模块的工作流程图 3 2 数据通道模块状态图 1 概论 MIPI协议 Moblie Industry Process Interface 移动行
  • Android 如何修改按钮默认的讨厌的蓝紫色

    1 在设置好按钮背景时 发现钮颜色始终没有改变 2 原来是默认主题themes的问题 在这里修改主题即可 3 找到 res values themes themes xml 双击打开themes xml文件 4 修改parent内容为 Th
  • Linux编程语言glob函数,linux glob函数man页与实例

    Linux Programmer s Manual NAME glob globfree find pathnames matching a pattern free memory from glob SYNOPSIS include in
  • 如何选择IO调度器

    概述 不格文学网 m vbuge com 由于对multi quque的IO调度算法不太熟悉 为了避免误人子弟 本文暂时只会介绍如何选择single queue的IO调度算法 等将来对multi queue有充分认识后再补充 如果不清楚什么
  • redhat激活管理

    redhat激活管理 redhat激活管理常用命令 查看 激活 删除订阅 刷新 redhat激活管理常用命令 https blog csdn net xixihahalelehehe article details 79108442 查看
  • pyqt5_1 Qt Designer组件讲解

    一 布局 Vertical Layout 纵向布局 Horizontal Layout 横向布局 Grid Layout 栅格布局 QGridLayout 网格布局 是将窗口分割成行和列的网络来进行排列 Form Layout 表单布局 在
  • 关于U盘中“文件夹EXE病毒”的解决方案

    笔者在使用U盘时 无意之间发现U盘所有文件的后缀名均变为 exe 经过查询相关资料 确认这是一种病毒 文件夹EXE病毒 一 简介 木马名称 Worm Win32 AutoRun soq 当把U盘插入到一台电脑后 U盘内生成了以原文件夹名字命
  • Ubuntu 安装 Oracle JDK

    1 写在前面 本文主要介绍如何在Ubuntu系统下安装Oracle JDK 2 环境准备 2 1 下载JDK 2 1 1 浏览器下载安装包 进入虚拟机浏览器访问官网地址 http www oracle com technetwork jav
  • 一分钟带你快速认识S参数

    S 参数是SI与RF领域工程师必备的基础知识 大家很容易从网络或书本上找到S Y Z参数的说明 但即使如此 在相关领域打滚多年的人 仍然可能还是会被一些问题困扰着 你懂S参数吗 不懂的话 那么请继续往下看 S参数简介 S参数 也就是散射参数
  • GitLab的使用 和 Git 、 Github、Gitlab的区别

    一 git github gitlab的区别 百度相关内容得到的理解 二 git最基本作用 版本控制 三 有集成了git的GIT安装包 github和gitlab都使用git该版本控制系统 来实现对代码的管理 所以 原先怎么用git操作gi
  • obs窗口捕获不到ppt白屏_如何用obs进行电脑直播,学会这篇,直播不再难

    很多人想在头条或者西瓜视频直播 除了用手机直播外 还可以用电脑进行直播 只要用obs进行简单设置即可达到要求 可以直播ppt 直播ps等 1 下载并安装好obs软件 点击文件 设置 在设置的窗口中 找到输出 一般输出的设置默认就好 无需更改
  • 微信浮窗是不是服务器保存,微信浮窗,真能解决小程序留存难题吗?

    小程序浮窗 到底有多大能量 作者丨Suvi 上个月 微信更新了7 0 5版本 对浮窗功能做了全新升级 支持最多同时添加5个项目 不含QQ音乐 并首次支持添加小程序 新版浮窗一上线 便被寄予厚望 各方将之解读为挽救公众号阅读量 提高小程序留存
  • 【8】测试用例设计-边界值法

    对于软件来说 错误经常发生在输入或输出值的关键点 边界值分析法是对软件的输入或输出边界进行测试的一种方法 它的所有测试用例都是在等价类的边界处设计 边界值分析需要选择一个或多个元素 以便等价类的每个边界都经过一次测试 与仅仅关注输入条件 输
  • QT+CUDA混合编程BUG(一)

    QT CUDA混合编程BUG 一 在QT中进行CUDA编程 CUDA库与其他外部库冲突 debug失败 问题描述 在QT中进行CUDA编程 单独使用CUDA编程时并未出现难以解决的问题 但当我讲CUDA处理的部分 加入已搭建完毕一项较大的Q
  • LeetCode第 292 题:Nim游戏(C++)

    292 Nim 游戏 力扣 LeetCode 剩下4块的时候 如果轮到你 那么你必输 先简单推一下 如果第n块的时候轮到你 n 5 必胜 拿1块 n 6 必胜 拿2块 n 7 必胜 拿3块 n 8 必败 无论我拿几块 对方都可以将我逼到4的