博弈专题之-- Play a game HDU - 1564

xiaoxiao2021-02-28  8

题目大意:

ailyanlu 和 8600玩棋盘游戏,棋盘的大小是 n*n。棋子放在一个角落的方格上。8600第一个先走,每一次,玩家都可以将石头水平或垂直的移动到一个未被访问的相邻的方格。没有能够移动的方格的人将会输掉比赛。如果双方采取策略最优,谁将赢得这场比赛?

大体思路:找规律 看下图:

S表示起点。

如果 n 为偶数,那么所有格子可以被 2*1 的砖块覆盖掉。 这样先手每次都移动到当前 2*1 的另外一块。先手必赢。

如果 n 为奇数。除了起始那个点,其余点都被 2*1 的砖块覆盖。所以后手必赢。

附上代码:

#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> #include<cmath> int main() { int n; while(scanf("%d",&n)&&n) { if(n%2 == 0) puts("8600"); else puts("ailyanlu"); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-2350145.html

最新回复(0)