#include<bits/stdc++.h> using namespace std; int n,m; int a[105][105]; int dx[]={0,-1,1,0}; int dy[]={1,0,0,-1}; struct node{ int x,y; }; bool vis[105][105]; bool g=false; vector<node> q; void dfs(int x,int y) { if(g)return; if(x==n-1&&y==m-1) {g=true; for(int i=0;i<(int)q.size();i++) { cout<<'('<<q[i].x<<','<<q[i].y<<')'<<endl; }return; } for(int i=0;i<4;i++) { int xx=x+dx[i]; int yy=y+dy[i]; if(a[xx][yy]==1)continue; if(xx>=0&&xx<n&&yy>=0&&yy<m&&!vis[xx][yy]) { vis[xx][yy]=true; q.push_back({xx,yy}); dfs(xx,yy); q.pop_back(); vis[xx][yy]=false; } } } int main() { cin>>n>>m; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin>>a[i][j]; } } q.push_back({0,0}); vis[0][0]=true; dfs(0,0); }
//很朴素的迷宫问题,其中需要注意的几个点我说一下,我这里采用的结构体加vector的方式存储这个路径,
//然后这里的路径跟vis的回溯很重要,要时刻记得。然后是dfs(0,0)之前要vis起点