Nim 游戏

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

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

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

示例 1:

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

示例 2:

输入:n = 1
输出:true

示例 3:

输入:n = 2
输出:true

提示:

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

Nim 游戏(C++)相关推荐

  1. 【bzoj3150】 cqoi2013—新Nim游戏

    www.lydsy.com/JudgeOnline/problem.php?id=3105 (题目链接) 题意 在第一个回合中,第一个游戏者可以直接拿走若干个整堆的火柴.可以一堆都不拿,但不可以全部拿 ...

  2. LeetCode实战:Nim 游戏

    背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 You are pla ...

  3. POJ 1704 Georgia and Bob (Nim游戏变形)

    题目:http://poj.org/problem?id=1704 思路:Nim游戏策略,做如下转换,如果N是偶数,则两两配对,将两个数之间的格子数(距离)看做成这一堆石头的数量. 如果N是奇数,则将 ...

  4. BZOJ 3105:[cqoi2013]新Nim游戏

    BZOJ 3105:[cqoi2013]新Nim游戏 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3105 题目大意:在传统的Nim取石子 ...

  5. 【bzoj3105】新Nim游戏

    Portal--> bzoj3105 新Nim游戏 Solution 转化一下问题 首先看一下原来的Nim游戏,先手必胜的条件是:每堆数量的异或和不为\(0\) 所以在新的游戏中,如果要保证自己 ...

  6. 文巾解题 292. Nim 游戏

    1 题目描述 2 解题思路 这其实是一个脑筋急转弯一样的题目.先给出结论吧:如果堆中石头的数量 n 不能被 4 整除,那么你总是可以赢得 Nim 游戏的胜利. 下面是推导部分: 让我们考虑一些小例子. ...

  7. 洛谷P4301 [CQOI2013]新Nim游戏

    洛谷P4301 [CQOI2013]新Nim游戏 题目描述 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火 ...

  8. 洛谷 P2197 nim游戏

    洛谷 P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取 ...

  9. 经典数学问题:Nim游戏

    Nim游戏的数学理论论述 Nim游戏是博弈论中最经典的模型,是组合游戏(Combinatorial Games)的一种,属于"Impartial Combinatorial Games&qu ...

  10. P2197 【模板】nim游戏

    题面:https://www.luogu.org/problem/P2197 本题的解法是把nim游戏看做是有向图游戏用SG函数来解的.Code: #include<cstdio> #in ...

最新文章

  1. 学习抖音上如何一下删除大型文件,源代码给出!
  2. CCNA11月14日战报
  3. 【Flutter】Dart 面向对象 ( 命名构造方法 | 工厂构造方法 | 命名工厂构造方法 )
  4. 我的Android进阶之旅------gt;Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed....
  5. 编程问题难解决,学会提问是关键!
  6. linux 逻辑卷 pe size 4.00 mib大小怎么改,linux逻辑卷的建立
  7. ClickHouse Keeper 源码解析
  8. eclipse解决国际化乱码问题
  9. 怎么用计算机做目录,word目录怎么自动生成详细教程
  10. 最好的开源网络入侵检测工具(网址及版本已验证并更新)
  11. win7计算机不能设置双屏怎么回事,告诉你win7怎么设置双屏显示
  12. 公众号刷粉、阅读量作弊
  13. js 中断函数执行_javascript 终止函数执行操作
  14. c++笔记(class)练手项目:暗网杀手排名系统
  15. 聊一聊Spring中@Transactional注解及其失效的七种场景
  16. 工智能是实现教育生态重构的有效手段,将改变教育的时空场景和供给水平
  17. winmail 数据库设置_Windows - 2003下搭建邮件服务器教程和使用 - Winmail - Server - 轻松架设邮件服务器 - 图文...
  18. 【数据库】MySQL数据库约束(六大约束)
  19. 8. R语言画:散点图、直方图、条形图、箱线图、小提琴图、韦恩图
  20. IntellIJ IDEA导入项目后无法运行方法的解决方法!

热门文章

  1. JDK 1.8中Instant时间戳类,Duration类,Period类,等一些与事件相关的类和接口
  2. 高级职称退休和中级职称退休,月工资相差多少?
  3. 如何界定目标和理想?
  4. JS的DOM操作——style的操作
  5. 这个被微软雪藏十几年的官方插件,没想到原来这么好用
  6. Deepin系统安装教程及无法关机问题解决办法
  7. 什么是三体系认证?企业认证三体系的好处
  8. Linux、ubuntu系统下查看显卡型号、显卡信息详解
  9. 利用CyberArticle定时自动下载保存博客的新文章
  10. 从零开始一步步写LSTM