bzoj2463[中山市选2009]谁能赢呢?

bzoj2463[中山市选2009]谁能赢呢?

题意:

给定一个n×n的棋盘,一个石头被放在棋盘的左上角。他们轮流移动石头。每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过。谁不能移动石头了就算输。假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢?

题解:

对于n*n为偶数的棋盘肯定可以用二格骨牌覆盖,这样每次先手都是走骨牌的一端而后手就可以走另一端,故后手赢。对于n*n为奇数的棋盘先手走了一步剩下的棋盘就可以被覆盖了,后手面临和之前先手面临的情况一样,故先手赢。由于奇数的平方是奇数,偶数平方是偶数,所以只要对输入判断奇偶性就行了。

代码:

1 #include <cstdio>
2 int n;
3 int main(){
4    while(1){scanf("%d",&n); if(!n)break; puts(n&1?"Bob":"Alice");}
5    return 0;
6 }

20160630

原文地址:https://www.cnblogs.com/YuanZiming/p/5720786.html