题意:
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的倍数有余,我即可赢
代码如下:
public class Solution {
public boolean canWinNim(int n) {
if(n % 4 == 0)
return false;
return true;
}
}