Leetcode: Nim Game
2015-12-28 02:17
281 查看
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.
因为每个人都取不到4个,假设自己后走,要保证每轮自己和对方取得数量的和是4,这样就能确保每轮完后都有4的倍数个石头被取走。这样,如果我们先走的话,先把n除4的余数个石头拿走,这样不管怎样,到最后都会留4个下来,对方取1个你就取3个,对方取2个你就取2个,就必赢了。
如果一开始就是4的倍数,你就输了,因为对方可以用同样的策略
public class Solution { public boolean canWinNim(int n) { return n%4 != 0; } }
相关文章推荐
- 搜索引擎的商业价值
- 搜索引擎的商业价值
- @class 优化作用.
- BugPhobia休息篇章:Beta阶段第IX次Scrum Meeting前奏
- Android官方刷新组件 SwipeRefreshLayout 的使用
- php 正则取字符串中间 去指定字符串开头 指定字符串结尾
- two sum
- devinzhang
- linux运维实战练习案例-2015年12月20日-12月31日(第一次)
- 安卓 Context 上下文+应用共享概括
- Leetcode: Word Pattern II
- Qt在Linux和ARM上的环境搭建
- 2015.12.28
- Juniper SRX 1firefly-perimeter 2.1X47-D20.7 端口交换机属性配置
- 深入浅出讲解:php的socket通信
- JAVA子类方法重写父类方法
- 地理杂志精选照片
- linux基础
- 进程的通信方式
- EL隐式对象