<span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: rgb(255, 255, 255);">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.</span>
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~3块石头,那么
如果石头数量是1~3,先手必赢;
如果是4,先手必输;
如果是5~7,可让后手面对数量为4的局面,先手必赢;
如果是8,先手会面临数量为4的局面,先手必输;
……
依次类推,当某一方 面对石头数量为4的倍数的情况,必输,要满足题意,先手不能是4的倍数,必赢。
代码如下:
public class Solution {
public boolean canWinNim(int n) {
if (n % 4 == 0){
return false;
}else{
return true;
}
}
}