记录编号 |
136392 |
评测结果 |
AAAAAAAAAA |
题目名称 |
走迷宫 |
最终得分 |
100 |
用户昵称 |
乌龙猹 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.002 s |
提交时间 |
2014-11-02 21:12:30 |
内存使用 |
0.29 MiB |
显示代码纯文本
#include<cstdio>
#define maxn 15
using namespace std;
int m,n,stx,sty,enx,eny,flag=0;
int a[maxn][maxn]={0},c[50][3];
int xx[4]={-1,0,0,1},
yy[4]={0,-1,1,0};
void dx(int);
void out(int);
int main()
{
freopen("maize.in","r",stdin);
freopen("maize.out","w",stdout);
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++) scanf("%d",&a[i][j]);
}
scanf("%d%d%d%d",&stx,&sty,&enx,&eny);
c[1][1]=stx;
c[1][2]=sty;
a[stx][sty]=0;
dx(2);
if(!flag) printf("-1\n");
return 0;
}
void dx(int x)
{
for(int i=0;i<4;i++)
{
int kx=c[x-1][1]+xx[i],ky=c[x-1][2]+yy[i];
if(kx>=1&&kx<=m&&ky>=1&&ky<=n)
{
if(a[kx][ky])
{
a[kx][ky]=0;
c[x][1]=kx;
c[x][2]=ky;
if(c[x][1]==enx&&c[x][2]==eny) out(x);
else dx(x+1);
a[kx][ky]=1;
}
}
}
}
void out(int ii)
{
flag=1;
for(int i=1;i<ii;i++)
{
printf("(%d,%d)->",c[i][1],c[i][2]);
}
printf("(%d,%d)\n",enx,eny);
}