292.[LeetCode]Nim Game
2016-04-16 00:27
253 查看
题目大意:
你和你的小伙伴在玩一种游戏,给定 N 个小石头,每次可以拿取 1/2/3 个石头,谁能拿到最后一个就赢了。给定 n 个石头,你是先手,判断是是否可以赢。
前提:你和小伙伴都不是傻逼
思路:
首先思考没有只能 拿一次的情况下,先手必胜的情况:n | canWin |
---|---|
1 | 胜 |
2 | 胜 |
3 | 胜 |
n | canWin |
---|---|
4 | 败 |
同理,6个的时候我们可以拿2个让对手先手必败状态,7个的时候拿3个。
n | canWin |
---|---|
5 | 胜 |
6 | 胜 |
7 | 胜 |
n | canWin |
---|---|
8 | 败 |
这样不断的维护,我们可以发现这是一个非常简单的循环问题。
代码
class Solution { public: bool canWinNim(int n) { if(n%4 == 0) return false; else return true; // 或者 return n%4; } };
总结:
很简单编码,有同学说面试的被问到过相关文章推荐
- Mybatis学习记录(三)--Mybatis配置文件详解
- 想追她?先算算你要等多久
- Transaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements
- 调整数组顺序使奇数位于偶数前面
- Geekband007第七周笔记分享
- c++中的模板
- [C++]用变量增长模拟算法运行时间
- 安装版MySQL安装图解
- Java:try与finally的说明
- CentOS 7安装配置Redis数据库
- CSU 1560 图书管理员的表白方式
- 20145208 实验二 Java面向对象程序设计
- 使用python对PDF文件进行等页数分割
- 二进制中1的个数
- 实例24 大数高精度
- 六种语言实现输出乘法口诀表
- (6)Spring Boot datasource - mysql【从零开始学Spring Boot】
- 关键字const
- 新买的移动硬盘在XP上不显示,读不出的解决教程
- LeetCode 289. Game of Life(生命游戏)