LeetCode OJ:Nim Game(Nim游戏)
2015-11-11 22:49
302 查看
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.
这个规定了自己先抽,那么很简单了 先看一下规律:
1:win
2: win
3: win
4: 无论如何都无法win
5:拿1,让对方面对4
6:拿2,让对方面对4
7:拿3,让对方面对4
8:没有办法
.....
可见,当石头数量是4的倍数的时候,先手是无可奈何的,所以代码就很简单了,如下:
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.
这个规定了自己先抽,那么很简单了 先看一下规律:
1:win
2: win
3: win
4: 无论如何都无法win
5:拿1,让对方面对4
6:拿2,让对方面对4
7:拿3,让对方面对4
8:没有办法
.....
可见,当石头数量是4的倍数的时候,先手是无可奈何的,所以代码就很简单了,如下:
class Solution { public: bool canWinNim(int n) { return n%4; } };
相关文章推荐
- 关于Fragment与Fragment、Activity通信的四种方式
- cacti安装配置文档
- 计算机安全
- 关于Fragment与Fragment、Activity通信的四种方式
- 关于Fragment与Fragment、Activity通信的四种方式
- 二分查找树
- poj 2139 Six Degrees of Cowvin Bacon 图论 Floyd最短路
- 【Leetcode】238-Product of Array Except Self【Java实现】【Medium】【two way traverse】
- linux RPM
- LeetCode Range Sum Query - Immutable
- XML操作
- HTML一般标签
- 关于Fragment与Fragment、Activity通信的四种方式
- 医药采购之供货商药品目录添加查询
- hdu2007 平方和与立方和 (朴素)
- html表单中get与post之间的区别
- python time 模块详解
- 指针数组与数组指针
- 新特性recyclerview 实现瀑布流
- 面向对象程序设计上机练习七(类和对象)