谁能赢呢?
题目描述
小明和小红经常玩一个博弈游戏。给定一个 n × n n\times n n×n 的棋盘,一个石头被放在棋盘的左上角。他们轮流移动石头。每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过。谁不能移动石头了就算输。
假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢?
输入格式
输入文件有多组数据。
输入第一行包含一个整数 n n n,表示棋盘的规模。
当输入 n n n 为 0 0 0 时,表示输入结束。
输出格式
对于每组数据,如果小明最后能赢,则输出 Alice
,否则输出 Bob
,每一组答案独占一行。
样例 #1
样例输入 #1
2
0
样例输出 #1
Alice
提示
对于 20 % 20\% 20% 的数据,保证 1 ≤ n ≤ 10 1\le n\le 10 1≤n≤10;
对于 40 % 40\% 40% 的数据,保证 1 ≤ n ≤ 1000 1\le n\le 1000 1≤n≤1000;
对于 100 % 100\% 100% 数据,保证 1 ≤ n ≤ 10000 1\le n\le 10000 1≤n≤10000。
思路
我们直接通过画图发现,只要地图是奇数的,肯定是先手必胜,反之先手必败。
证明过程
代码
#include<iostream>
#include<algorithm>
using namespace std;
//likou
int n;
int main(){
while(cin>>n,n){
if(n&1){
puts("Bob");
}else{
puts("Alice");
}
}
return 0;
}