您的位置:首页 > 其它

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

2018-01-22 20:37 274 查看
题目大意:

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: