Description
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-3是必赢。
4是必输。
所以到你的时候5(4+1)-7(4+3),你是必胜的,因为你给对手剩下的个数是4。
到8,你随便抓,对手给你剩下的必定是4,所以你必输。
9-11同理,你给对手剩下的绝对是8,你必胜。
。。。
因此,4的倍数你是必输的,其他时候是必胜的。
public boolean canWinNim(int n) {
return n % 4 != 0;
}