【Leetcode】292. Nim Game
来源:互联网 发布:淘宝下架时间显示插件 编辑:程序博客网 时间:2024/04/28 09:46
思路:
1个石子,先手全部拿走;2个石子,先手全部拿走;3个石子,先手全部拿走;4个石子,后手面对的是先手的第1,2,3情况,后手必胜;5个石子,先手拿走1个让后手面对第4种情况,后手必败;6个石子,先手拿走2个让后手面对第4种情况,后手必败;7个石子,先手拿走3个让后手面对第4种情况,后手必败。
当n∈[1,3]时,先手必胜。当n == 4时,无论先手第一轮如何选取,下一轮都会转化为n∈[1,3]的情形,此时先手必负。当n∈[5,7]时,先手必胜,先手分别通过取走[1,3]颗石头,可将状态转化为n == 4时的情形,此时后手必负。当n == 8时,无论先手第一轮如何选取,下一轮都会转化为n∈[5,7]的情形,此时先手必负。
容易看出来,只有当出现了4的倍数,先手无可奈何,其余情况先手都可以获胜。(石子数量为4的倍数)后手的获胜策略十分简单,每次取石子的数量,与上一次先手取石子的数量和为4即可;(石子数量不为4的倍数)先手的获胜策略也十分简单,每次都令取之后剩余的石子数量为4的倍数(4*0=0,直接拿光),他就处于后手的位置上,利用上一行的策略获胜
public class Solution { public boolean canWinNim(int n) { if (n % 4 == 0) return false; else return true; }}
Runtime:1ms
1 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
- 【Matlab】Matlab R2014a 64位与Visual Studio2015的mex相关问题
- SlidingMenu 常用属性介绍
- 长链剖分随想
- linux中的task_struct结构体成员简要介绍
- WebGL学习系列-第一个程序
- 【Leetcode】292. Nim Game
- 卡尔曼滤波(Kalman Filter)
- 如何有效阅读caffe源码
- SpringMVC+Spring+Hibernate4框架整合
- JSP+Servlet (review)
- JSP&Servlet学习笔记----第3章
- [华为OJ--C++]097-24点游戏算法
- visual studio(VS)工程重命名
- 1011. A+B和C (15)