题解 | #迷宫问题#
迷宫问题
https://www.nowcoder.com/practice/cf24906056f4488c9ddb132f317e03bc
#include<stdio.h> #include<string.h> //从后往前找路 int map[10][10]; int n,m; int tx[100]; int ty[100]; int k=0; int fun(int x,int y) { if(x==n-1&&y==m-1) { map[x][y]=2; tx[k]=x; ty[k]=y; k++; //printf("(%d,%d)\n",tx[k-1],ty[k-1]); return 1; } if(x>=n||x<0||y>=m||y<0) return 0; if(map[x][y]!=0) return 0; map[x][y]=2; if(fun(x+1,y)) { tx[k]=x; ty[k]=y; k++; //printf("(%d,%d)\n",tx[k-1],ty[k-1]); return 1; } if(fun(x-1,y)) { tx[k]=x; ty[k]=y; k++; //printf("(%d,%d)\n",tx[k-1],ty[k-1]); return 1; } if(fun(x,y+1)) { tx[k]=x; ty[k]=y; k++; //printf("(%d,%d)\n",tx[k-1],ty[k-1]); return 1; } if(fun(x,y-1)) { tx[k]=x; ty[k]=y; k++; //printf("(%d,%d)\n",tx[k-1],ty[k-1]); return 1; } return 0; } int main() { scanf("%d %d",&n,&m); for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { scanf("%d",&map[i][j]); } } fun(0,0); //printf("%d",k); for(int i=k-1;i>=0;i--) printf("(%d,%d)\n",tx[i],ty[i]); return 0; }