智者夺魁游戏
有个很有趣的游戏,我们称为智者夺魁游戏,游戏玩法如下:
桌上有N个弹珠,每次只能从中拿出1到3个弹珠,最后拿完桌上弹珠的人获胜
现在有如下问题:
现在有A、B两同学,A同学先开始从一堆弹珠中拿,如果希望A获胜,则弹珠个数N是满足什么条件?
这个问题,我们不妨来分类讨论下:
CASE1. 假设桌上有N个弹珠(N<4),A先拿,A肯定全拿完,无论如何都是A胜出(别跟我说A会手下留情);
CASE2. 假设桌上有N个弹珠(N=4),A先拿,A无论怎么拿都会留机会给B,让B胜出;
CASE3. 假设桌上有N个弹珠(4<N<8),A先拿,A想胜出,必然不能把CASE2的情况留给自己开始,所以A会拿的只剩下4个弹珠让B开始,A会胜出;
CASE4. 假设桌上有N个弹珠(N=8),A先拿,无论A怎么拿,B都会把CASE2的情况留给A,所以B会胜出;
…….
以此类推: 只要是4的倍数,A先出手,在B非常机智的情况下,A是不可能赢的…
Code
1
2
3
4
5
public boolean winNum(int N){
return N%4 != 0;
}