你和你的朋友正在玩棋子跳格子的游戏,而棋盘是一个由n个格子组成的长条,你们两人轮流移动一颗棋子,每次可以选择让棋子跳1-3格,先将棋子移出棋盘的人获得胜利。我们知道你们两人都会采取最优策略,现在已知格子数目,并且初始时棋子在第一格由你操作。请你计算你是否能获胜。
给定格子的数目n(n为不超过300的正整数)。返回一个整数,1代表能获胜,0代表不能获胜。
经过枚举发现,只要格子数是4的倍数,先走的人必输,所以只要格子数不是4的倍数,先走的人只要走一步即可将剩下的格子弄成四的倍数,这样后走的人必输。代码如下
class Jump {
public:
int checkWin(int n) {
// write code here
if((n-1)%4==0) return 0; //因为妻子在第一格,剩下可走的格子就为n-1
return 1;
}
};