题目描述
解法思路
这类题目都有通用解法,可以考虑n个石头,每次被对方拿走1-m个石头,拿到最后一个的赢
如果当n = (m + 1) * k
时,假设先手的人拿s个石头,s在1-m这个范围内,那么后手的人只需要拿m+1-s
个石头,循环k个轮回,后手的人一定赢
如果n = (m + 1) * k + i
时,先手的人拿i个石头,还剩下m+1个石头,又变成上面的情况了,只不过这时先手后手换了位置,先手一定赢
代码
public class Solution {
public boolean canWinBash(int n) {
if(n%4 == 0){
return false;//后手必赢
}
else return true;
}
}