Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
136456 | 林扬泉 | 迷宫问题 | C++ | 解答错误 | 53 | 1 MS | 596 KB | 790 | 2024-03-09 09:31:02 |
#include<bits/stdc++.h> using namespace std; const int N=110; int n,m; int a[N][N]; bool f[N][N]; int r[N][3]; int dx[9]={0,0,0,-1,1,1,1,-1,-1}; int dy[9]={0,1,-1,0,0,-1,1,-1,1}; void pri(int k){ for(int i=1;i<=k;i++){ printf("%d %d\n",r[i][1],r[i][2]); } } void dfs(int x,int y,int k){ r[k][1]=x; r[k][2]=y; if(x==n&&y==m){ pri(k); exit(0); } int xx,yy; for(int i=1;i<=8;i++){ xx=x+dx[i],yy=y+dy[i]; if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&!f[xx][yy]){ f[xx][yy]=true; if(xx==1&&yy==1){ k=0; } dfs(xx,yy,k+1); } } } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ scanf("%d",&a[i][j]); if(a[i][j]==1){ f[i][j]=true; } } } dfs(1,1,1); printf("-1\n"); return 0; }