比赛 20140714下午练习 评测结果 AAAAWWWWEA
题目名称 跳马问题 最终得分 50
用户昵称 slyrabbit 运行时间 0.079 s
代码语言 C++ 内存使用 0.35 MiB
提交时间 2014-07-14 15:25:53
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int m,n;
int a[5000][2],head=0,tile=0,s=0;
int r1[4]={-2,-1,+1,+2};
int r2[4]={+1,+2,+2,+1};
void bfs(int i,int j)
{
	while(head<tile)
	{
		a[head+1][0]=0;
		a[head+1][1]=0;
		head++;
		for(int k=0;k<4;k++)
		{
			if(i+r1[k]>0&&i+r1[k]<=m&&j+r2[k]>0&&j+r2[k]<=n)
			{
				if(i+r1[k]==m&&j+r2[k]==n)
				{
					s++;
					continue;
				}
				else
				{
					a[++tile][0]=i+r1[k];
					a[tile][1]=j+r2[k];
				}
			}
		}
		bfs(a[head+1][0],a[head+1][1]);
	}
}
int main()
{
	freopen("horse.in","r",stdin);
	freopen("horse.out","w",stdout);
	cin>>m>>n;
	tile+=1;
	a[tile][0]=1;
	a[tile][1]=1;
	bfs(1,1);
	cout<<s;
	return 0;
}