dfs走迷宫

来源:互联网 发布:淘宝买家仅退款不退货 编辑:程序博客网 时间:2024/05/22 10:35


//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;}


0 0