记录编号 336156 评测结果 AAAAAAAAAA
题目名称 走迷宫 最终得分 100
用户昵称 GravatarZwoi_只会打表抄代码的蒟蒻 是否通过 通过
代码语言 C 运行时间 0.012 s
提交时间 2016-11-02 22:00:27 内存使用 0.27 MiB
显示代码纯文本
#include <stdio.h>
int map[20][20],book[20][20],n,m,x[400],y[400],j,xx,yy,e,nx,ny;
void dfs(int x1,int y1,int step)
{
int next[4][2]=
{
{-1,0},
{0,-1},
{0,1},
{1,0}
};
int i,ii,nx,ny;
	if(x1==xx&&y1==yy)
	{
		e++;
		for(ii=1;ii<=step-1;ii++)
			printf("(%d,%d)->",x[ii],y[ii]);
		printf("(%d,%d)\n",x1,y1);
	}
	for(i=0;i<=3;i++)
	{
		nx=x1+next[i][0];
		ny=y1+next[i][1];
		if(nx>n||nx<1||ny>m||ny<1)
			continue;
		if(map[nx][ny]==1&&book[nx][ny]==0)
		{
			step++;
			x[step]=nx;
			y[step]=ny;
			book[nx][ny]=1;
			dfs(nx,ny,step);
			step--;
			book[nx][ny]=0;
		}
	}
	return ;
}
int main()
{
	int i;
	freopen("maize.in","r",stdin);
	freopen("maize.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			scanf("%d",&map[i][j]);
	scanf("%d%d",&x[1],&y[1]);
	scanf("%d%d",&xx,&yy);
	e=-1;
	book[x[1]][y[1]]=1;
	dfs(x[1],y[1],1);
	if(e==-1)
		printf("-1");
	return 0;
}