292.[LeetCode]Nim Game
来源:互联网 发布:剑灵女帝捏脸数据 编辑:程序博客网 时间:2024/06/10 04:15
题目大意:
你和你的小伙伴在玩一种游戏,给定 N 个小石头,每次可以拿取 1/2/3 个石头,谁能拿到最后一个就赢了。
给定 n 个石头,你是先手,判断是是否可以赢。
前提:你和小伙伴都不是傻逼
思路:
首先思考没有只能 拿一次的情况下,先手必胜的情况:
从第4个起,就是有交换手了,有4个的时候,无论拿多少个,都会导致对方进入 先手必胜 的条件,就是还剩1,2,3个,所以剩下4个 是 先手必败状态
因为之后都是有交换手的,所以我们应该做的是能 确保 对手进入必败的状态,比如有5个的时候,我们可以拿1个,让还剩四个,并且是对手拿,让对手进入先手必败状态
同理,6个的时候我们可以拿2个让对手先手必败状态,7个的时候拿3个。
但是到了 有8个 的情况下,无论我们那1,2,3个都不能让对手在他的回合,进入先手必败状态了,所以8是一个 先手必败状态
而到9个的时候,我们可以让拿走一个,让对手进入 目前确定了 先手必败状态 — 8个的时候
这样不断的维护,我们可以发现这是一个非常简单的循环问题。
代码
class Solution {public: bool canWinNim(int n) { if(n%4 == 0) return false; else return true; // 或者 return n%4; }};
总结:
很简单编码,有同学说面试的被问到过
0 0
- [leetcode] 292.Nim Game
- 【LeetCode】292.Nim Game
- leetcode:292. Nim Game
- leetCode 292. Nim Game
- 292. Nim Game LeetCode
- LeetCode 292. Nim Game
- LeetCode 292. Nim Game
- LeetCode 292.Nim Game
- LeetCode 292. Nim Game
- [LeetCode]292.Nim Game
- <LeetCode> 292. Nim Game
- leetcode-292.Nim Game
- LeetCode 292. Nim Game
- LeetCode *** 292. Nim Game
- leetcode 292. Nim Game
- Leetcode 292. Nim Game
- 292.[LeetCode]Nim Game
- 【leetcode】292. Nim Game
- [C++]用变量增长模拟算法运行时间
- Geekband007第七周笔记分享
- 用Python3下载网页图片
- c++中的模板
- TimePickerDialog和DatePickerDialog使用及问题解决
- 292.[LeetCode]Nim Game
- Flume:本地文件到Kafka
- Mybatis学习记录(三)--Mybatis配置文件详解
- activity与fragment通信汇总
- HDU 4622 Reincarnation 后缀自动机
- Intent详解
- (LeetCode 191) Number of 1 Bits
- CLM研究
- [POJ 3276] Face The Right Way (翻转问题+技巧)