首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Nim 游戏(C++)

Nim 游戏(C++)

作者头像
GeekLiHua
发布2025-01-21 10:51:15
发布2025-01-21 10:51:15
1910
举报
文章被收录于专栏:JavaJava

Nim 游戏

你和你的朋友,两个人一起玩 Nim 游戏:

  • 桌子上有一堆石头。
  • 你们轮流进行自己的回合, 你作为先手 。
  • 每一回合,轮到的人拿掉 1 - 3 块石头。
  • 拿掉最后一块石头的人就是获胜者。

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

示例 1:

代码语言:javascript
复制
输入:n = 4
输出:false 
解释:以下是可能的结果:
1. 移除1颗石头。你的朋友移走了3块石头,包括最后一块。你的朋友赢了。
2. 移除2个石子。你的朋友移走2块石头,包括最后一块。你的朋友赢了。
3.你移走3颗石子。你的朋友移走了最后一块石头。你的朋友赢了。
在所有结果中,你的朋友是赢家。

示例 2:

代码语言:javascript
复制
输入:n = 1
输出:true

示例 3:

代码语言:javascript
复制
输入:n = 2
输出:true

提示:

  • 1 <= n <= 231 - 1
代码语言:javascript
复制
class Solution {
public:
// 如果是第一感觉 应该是dp问题 
// 但是dp问题又太难了 
// 然后就是贪心问题 
// 然后就是开始找规律
// 这个规律就是 对于一次1~3个那么把总数不断的划分 
// 然后看最小集合 如果是n <= 3的话 那么就是第一个必赢
// 如果是4个的话 第二个人必赢
// 然后感觉就是这个循环 如果是4的倍数好像就可以赢
// 贪心问题就是这样试出来的

    bool canWinNim(int n) {
        return n % 4 != 0;
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Nim 游戏
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档