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

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

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 1805  Solved: 1333
[ Submit][ Status][ Discuss]

Description

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

Input

    输入文件有多组数据。
    输入第一行包含一个整数n,表示棋盘的规模。
    当输入n为0时,表示输入结束。
 

Output

对于每组数据,如果小明最后能赢,则输出”Alice”, 否则输出”Bob”, 每一组答案独占一行。

Sample Input

2
0

Sample Output

Alice

HINT

对于所有的数据,保证1<=n<=10000。

Source

[ Submit][ Status][ Discuss]

n = 2时,,样例告诉我们Alice必胜
n = 3时,不难尝试出Bob必胜--
那就有个大胆的猜想,,,分奇偶即可??
没错是对的。。。
n为偶数的时候,整个网格可以由一堆1*2或2*1的骨牌覆盖,
两个人的操作就可以看做这些覆盖,,那么每次顺着骨牌走就行了
n如果是奇数,,去掉起点以后恰好也能由这些骨牌覆盖,,因此胜负转置
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;

int main()
{
	#ifdef DMC
		freopen("DMC.txt","r",stdin);
	#endif
	
	for (;;)
	{
		int n; scanf("%d",&n);
		if (!n) break;
		if (n&1) puts("Bob"); else puts("Alice");
	}
	return 0;
}

你可能感兴趣的:(杂谈)