【JZOJ】【暴力】 游戏

题意

在一个n∗n n*nn∗n的棋盘中,有一个皇后在(x,y)的位置上,限定只能往左边、下面、左下角走若干格,玩家一和玩家二可以对皇后进行操作,玩家一先操作,看谁先把皇后走到(1,n)(左下角)
这里是先读入y再读入x
有多组数据!!

样例

输入

6
2 4

输出

2

思路

找规律(设必胜点为1,必败点为0)
首先我们先设一个图中的一个点为必败点,那么可以到这个点的所有路的是比胜点

如:
1
1 0 0 1
1 0 1 0
1 1 0 0
0 1 1 1
2
1 0 0 1
1 0 1 1
1 1 0 1
0 1 1 1
3
1 1 1 1
1 0 1 1
1 1 0 1
1 1 1 1 

于是就可以了求出答案了

代码

#include <cstdio>
#include <cstring>
using namespace std;
int n,x,y;
int f[100010];
int main()
{
	freopen("game.in","r",stdin);
	freopen("game.out","w",stdout);
    scanf("%d",&n);
	while (n)
	{	
		scanf("%d%d",&y,&x);
		memset(f,0,sizeof(f));
		x=n-x+1; int j=0; bool p=0;
		for(int i=1;i+j<=n;++i)
			if(!f[i])
			{
				f[i]=1;
				if((x==i&&y==i+j)||(x==i+j&&y==i))
				{
					puts("2");
					p=1;
					break;
				}
				f[i+j]=1; ++j;
			}
	    	if(!p) puts("1");
			n=0; scanf("%d",&n);
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值