Nim 游戏(C++)
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++)相关推荐
- 【bzoj3150】 cqoi2013—新Nim游戏
www.lydsy.com/JudgeOnline/problem.php?id=3105 (题目链接) 题意 在第一个回合中,第一个游戏者可以直接拿走若干个整堆的火柴.可以一堆都不拿,但不可以全部拿 ...
- LeetCode实战:Nim 游戏
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 You are pla ...
- POJ 1704 Georgia and Bob (Nim游戏变形)
题目:http://poj.org/problem?id=1704 思路:Nim游戏策略,做如下转换,如果N是偶数,则两两配对,将两个数之间的格子数(距离)看做成这一堆石头的数量. 如果N是奇数,则将 ...
- BZOJ 3105:[cqoi2013]新Nim游戏
BZOJ 3105:[cqoi2013]新Nim游戏 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3105 题目大意:在传统的Nim取石子 ...
- 【bzoj3105】新Nim游戏
Portal--> bzoj3105 新Nim游戏 Solution 转化一下问题 首先看一下原来的Nim游戏,先手必胜的条件是:每堆数量的异或和不为\(0\) 所以在新的游戏中,如果要保证自己 ...
- 文巾解题 292. Nim 游戏
1 题目描述 2 解题思路 这其实是一个脑筋急转弯一样的题目.先给出结论吧:如果堆中石头的数量 n 不能被 4 整除,那么你总是可以赢得 Nim 游戏的胜利. 下面是推导部分: 让我们考虑一些小例子. ...
- 洛谷P4301 [CQOI2013]新Nim游戏
洛谷P4301 [CQOI2013]新Nim游戏 题目描述 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火 ...
- 洛谷 P2197 nim游戏
洛谷 P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取 ...
- 经典数学问题:Nim游戏
Nim游戏的数学理论论述 Nim游戏是博弈论中最经典的模型,是组合游戏(Combinatorial Games)的一种,属于"Impartial Combinatorial Games&qu ...
- P2197 【模板】nim游戏
题面:https://www.luogu.org/problem/P2197 本题的解法是把nim游戏看做是有向图游戏用SG函数来解的.Code: #include<cstdio> #in ...
最新文章
- 学习抖音上如何一下删除大型文件,源代码给出!
- CCNA11月14日战报
- 【Flutter】Dart 面向对象 ( 命名构造方法 | 工厂构造方法 | 命名工厂构造方法 )
- 我的Android进阶之旅------gt;Android中MediaRecorder.stop()报错 java.lang.RuntimeException: stop failed....
- 编程问题难解决,学会提问是关键!
- linux 逻辑卷 pe size 4.00 mib大小怎么改,linux逻辑卷的建立
- ClickHouse Keeper 源码解析
- eclipse解决国际化乱码问题
- 怎么用计算机做目录,word目录怎么自动生成详细教程
- 最好的开源网络入侵检测工具(网址及版本已验证并更新)
- win7计算机不能设置双屏怎么回事,告诉你win7怎么设置双屏显示
- 公众号刷粉、阅读量作弊
- js 中断函数执行_javascript 终止函数执行操作
- c++笔记(class)练手项目:暗网杀手排名系统
- 聊一聊Spring中@Transactional注解及其失效的七种场景
- 工智能是实现教育生态重构的有效手段,将改变教育的时空场景和供给水平
- winmail 数据库设置_Windows - 2003下搭建邮件服务器教程和使用 - Winmail - Server - 轻松架设邮件服务器 - 图文...
- 【数据库】MySQL数据库约束(六大约束)
- 8. R语言画:散点图、直方图、条形图、箱线图、小提琴图、韦恩图
- IntellIJ IDEA导入项目后无法运行方法的解决方法!