比赛 搜索题... 评测结果 AAAAAAAAAA
题目名称 跳马问题 最终得分 100
用户昵称 奶猹 运行时间 0.040 s
代码语言 C++ 内存使用 0.29 MiB
提交时间 2014-11-04 18:53:16
显示代码纯文本
#include<cstdio>
using namespace std;

short n,m;
bool b[16][16];
short bx,by,ex,ey;
struct aaa{
	int x,y;
}a[110];
short fx[4]={-2,-1,1,2};
short fy[4]={1,2,2,1};
bool flag=0;
int ans=0;

void init();
void dfs(int);
void outit(int);

int main()
{
	freopen("horse.in","r",stdin);
	freopen("horse.out","w",stdout);
	init();
	dfs(2);
	printf("%d\n",ans);
	return 0;
}
void init()
{
	scanf("%hd%hd",&n,&m);
	for(int i=1;i<=n;i++)
	for(int j=1;j<=m;j++)
	b[i][j]=1;
	a[1].x=1;
	a[1].y=1;
	b[bx][by]=0;
}
void dfs(int k)
{
	for(int i=0;i<4;i++)
	{
		int kx,ky;
		kx=a[k-1].x+fx[i];
		ky=a[k-1].y+fy[i];
  		if(kx<1||kx>n||ky<1||ky>m)continue;
		if(b[kx][ky])
		{
			b[kx][ky]=0;
			a[k].x=kx;
			a[k].y=ky;
			if(a[k].x==n&&a[k].y==m)ans++;
			else dfs(k+1);
			b[kx][ky]=1;
		}
	}
}