[LeetCode]-292. Nim Game(Easy)(C + 尼姆游戏)
2016-05-09 11:06
525 查看
292. Nim Game
My SubmissionsQuestion
Editorial Solution
Total Accepted: 67907 Total
Submissions: 128306 Difficulty: Easy
You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will be the winner. You
will take the first turn to remove the stones.
Both of you are very clever and have optimal strategies for the game. Write a function to determine whether you can win the game given the number of stones in the heap.
For example, if there are 4 stones in the heap, then you will never win the game: no matter 1, 2, or 3 stones you remove, the last stone will always be removed by your friend.
Hint:
If there are 5 stones in the heap, could you figure out a way to remove the stones such that you will always be the winner?
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.
Subscribe to see which companies asked this question
Show Tags
Show Similar Problems
Have you met this question in a real interview?
Yes
No
Discuss Notes
这题往小说可以追溯到小学奥数或者脑筋急转弯的书中,往大说可以深究到博弈论。然而编程在这里并没有卵用,
因为目的是给对方最后留下的石头要是4,则对方就必输!因为每个人都取不到4个,假设自己后走,
要保证每轮自己和对方取得数量的和是4,这样就能确保每轮完后都有4的倍数个石头被取走。
这样,如果我们先走的话,先把n除4的余数个石头拿走,这样不管怎样,到最后都会留4个下来,
对方取1个你就取3个,对方取2个你就取2个,对方取3个你就取一个。就必赢了。反之对方也会以同样的思路来思考,
即如果你第一次得到的是4的倍数,则你就必输了!
bool canWinNim(int n) { //如果一开始就是4的倍数,你就输了,因为对方可以用同样的策略 return (n%4!=0); }
相关文章推荐
- 网站优化的个人拙见
- 网格弹簧质点系统模拟(Spring-Mass System by Euler Integration)
- 枚举所有继承特定接口的类
- jQuery中的supersized的插件的功能描述
- 关于mybatis “org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)” 错误的问题。
- js文字转码方法【学习笔记】
- Windows 7 USB DVD Download Tool 制作的U盘无法启动安装Windows7 SP1
- ASP.NET Web API 简介
- c/c++算法 排列组合问题
- ios 跳转设置 ios7
- BaseActivit、BaseFragment、basepager
- JavaScript中判断为整数的多种方式
- Android性能优化-SQLite数据库
- 算法学习(十),跳台阶问题、奇偶排序
- 设计模式之状态模式
- ALV字段设置更改后,展示不同步的问题
- 网上查了点关于windows注册表的知识,发现基本名词没理解好,于是整理这篇笔记(可能个别地方不准确,先这么理解吧),有了这个理解,再去看网上的文章,就差不读了
- Yii2-redis
- 堆的分配参数
- 软件版本号说明