考虑:
1.有1,2,3颗石子,我方可以直接取胜。
2.有4颗石子,我方无论如何都不可能取胜,因为无论怎么拿都会给对方剩下正好能取走的石子。
(可以发现,剩4颗石子的时候谁先手谁输。)
3.有5,6,7颗石子,我方可以通过拿1,2,3颗石子,使局面变成剩4颗石子且对方先手。
4.有8颗石子,我方无论怎样拿,对方都可以造成剩4颗石子且我方先手的局面,我方不可能赢。
5.以此类推,只要是4的倍数,我方不可能赢。
代码:
class Solution {
public:
bool canWinNim(int n) {
return (n%4!=0);
}
};