dfs走迷宫

    xiaoxiao2021-03-26  20

    //0表示路,1代表墙,从左上角走到右下角 #include<iostream> #include<algorithm> using namespace std; int n,m,f=0,a[101][101]={0}; int v[101][101]={0}; //标记是否访问 int dir[4][2]={{1,0},{-1,0},{0,-1},{0,1}}; void dfs(int x,int y) { int xx,yy,i,j; v[x][y]=1; //1表示已经访问过 if (x==n-1 && y==m-1) //到达终点 { f=1; return ; } for (i=0;i<4;i++) { xx=x+dir[i][0]; yy=y+dir[i][1]; //生成新的方向下标 if (xx<0||xx>=n||yy<0||yy>=m||v[xx][yy]||a[xx][yy]==1) continue; dfs(xx,yy); } } int main() { int i,j; cin>>n>>m; for (i=0;i<n;i++) for (j=0;j<m;j++) cin>>a[i][j]; dfs(0,0); if (f) cout<<"走的通"; else cout<<"走不通"; return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-662191.html

    最新回复(0)