首页 > 代码库 > LeetCode 292 Nim Game
LeetCode 292 Nim Game
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个石子时的执行手交给对面,则需要将8个石子时的执行手交由对面,自己再造成剩余4个石子的情形即可,反复外推,则可得出4的倍数的这一关键信息。
1 public class Solution 2 { 3 public boolean canWinNim(int n) 4 { 5 if(n % 4 == 0) 6 return false; 7 else 8 return true; 9 }10 }
LeetCode 292 Nim Game