比赛 |
板子大赛 |
评测结果 |
AAAAAAAAAA |
题目名称 |
走迷宫 |
最终得分 |
100 |
用户昵称 |
zqy |
运行时间 |
0.030 s |
代码语言 |
C++ |
内存使用 |
3.53 MiB |
提交时间 |
2025-01-22 11:04:02 |
显示代码纯文本
#include <iostream>
#include <cstdio>
using namespace std;
const int N=100;
int m,n,mp[N][N],sx,sy,ex,ey,px[N*N],py[N*N],fx[]={-1,0,0,1},fy[]={0,-1,1,0},mk[N][N],f;
void print(int len){
for(int i=1;i<=len;i++){
printf("(%d,%d)",px[i],py[i]);
if(i!=len)printf("->");
}
printf("\n");
f=1;
}
void dfs(int x,int y,int t){
if(x==ex&&y==ey)print(t-1);
else{
for(int i=0;i<4;i++){
int xx=x+fx[i],yy=y+fy[i];
if(xx<1||xx>n||yy<1||yy>m||mp[xx][yy]==0||mk[xx][yy])continue;
px[t]=xx,py[t]=yy,mk[xx][yy]=1;
dfs(xx,yy,t+1);
px[t]=py[t]=0,mk[xx][yy]=0;
}
}
}
int main(){
freopen("maize.in","r",stdin);
freopen("maize.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&mp[i][j]);
}
}
scanf("%d %d",&sx,&sy);
scanf("%d %d",&ex,&ey);
if(mp[sx][sy]==0||mp[ex][ey]==0){
printf("-1\n");
return 0;
}
px[1]=sx,py[1]=sy,mk[sx][sy]=1;
dfs(sx,sy,2);
if(!f)printf("-1\n");
return 0;
}