题目大意
% 给定一个 n×nn\times nn×n 的矩阵,一个石头被放在棋盘的左上角。两人轮流移动石头。每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问过。谁不能移动石头了就算输。
假如小明先移动石头,而且两个选手都以最优策略走步,问最后谁能赢?
数据范围 1⩽n⩽100001\leqslant n\leqslant 100001⩽n⩽10000
题解
% 将棋盘黑白染色,显然一位选手能到达的所有格子的颜色均相同。
我们考虑先手和后手交替行动一次,则棋盘的大小减小了 1×21\times 21×2,不对奇偶性产生影响,如果假定最终的棋盘上的每个格子都被走过,则最终胜负只与格子数量的奇偶性相关,即有偶数个格子的时候,先手必胜,反之先手必败。
那如果棋盘没有被走完呢?可以发现,必胜方总有办法在棋盘要被分成两部分的时候,将棋盘分出一份偶数个格子的区域和另一份与原来棋盘格子数量奇偶性相同的区域,并且后续的决策只能在后面那块区域中,换言之,必胜方总能找到策略维持他的优势。
代码
#include<stdio.h>
int n;
int main(){
while(~scanf("%d",&n)&&n)
puts(n&1?"Bob":"Alice");
return 0;
}
本文探讨了一个两人轮流移动石头的棋盘游戏,目标是在一个n×n的矩阵上移动石头,每回合只能向上、下、左、右移动一格,且不能重复访问已访问过的格子。通过将棋盘黑白染色和分析奇偶性,我们得出结论,当格子数量为偶数时,先手必胜;反之,先手必败。
266

被折叠的 条评论
为什么被折叠?



