bzoj 2463: [中山市选2009]谁能赢呢?
Description
小明和小红经常玩一个博弈游戏。给定一个n×n的棋盘,一个石头被放在棋盘的左上角。他们轮流移动石头。每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过。谁不能移动石头了就算输。假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢?
Solution
容易发现:如果\(n\)是偶数,那么先手只要不往回走就是必胜,\(n\)是奇数则后手必胜.
#include <iostream>
#include <cstdio>
#define RG register
#define il inline
#define iter iterator
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
using namespace std;
typedef long long ll;
int n;
void work()
{
if(!n)return ;
if(n%2==0)puts("Alice");
else puts("Bob");
}
int main()
{
freopen("pp.in","r",stdin);
freopen("pp.out","w",stdout);
while(~scanf("%d",&n))work();
return 0;
}