C++ 深度优先搜索 (DFS) 算法优化:迷宫问题求解
#include//u003cbits//u002fstdtr1c++.h//u003e/nusing namespace std;/ninline static const nullptr_t _={//n/tios_base::sync_with_stdio(0);//n/tcin.tie(nullptr),cout.tie(nullptr);//n/treturn nullptr;//n}();/nint n,m,x,y;char** mp;bool** vis;/nconstexpr int dx[4]={0,-1,0,1},dy[4]={1,0,-1,0};/nvoid dfs(int x,int y,int s,int cnt,int maxStep){//n/tif(cnt>=maxStep) return;//n/tfor(int i=0;i<4;i++){//n/t/tint nx=x+dx[i],ny=y+dy[i];//n/t/tif(0<=nx&&nx<n&&0<=ny&&ny<m&&!vis[nx][ny]&&mp[nx][ny]!='#'){//n/t/t/tvis[nx][ny]=1;//n/t/t/tif(mp[nx][ny]=='S'&&s>=3){//n/t/t/t/tcout.put('Y').put('e').put('s').put(10);//n/t/t/t/tfor(int i=0;i<n;i++){//n/t/t/t/t/tdelete[] mp[i];//n/t/t/t/t/tdelete[] vis[i];//n/t/t/t/t}//n/t/t/t/tdelete[] mp;//n/t/t/t/tdelete[] vis;//n/t/t/t/texit(0);//n/t/t/t}//n/t/t/tdfs(nx,ny,s+1,cnt+1,maxStep);//n/t/t/tvis[nx][ny]=0;//n/t/t}//n/t}//n}/nint main(){//n/tcin>>n>>m;//n/tmp=new char*[n]{};//n/tvis=new bool*[n]{};//n/tfor(int i=0;i<n;i++){//n/t/tmp[i]=new char[m]{};//n/t/tvis[i]=new bool[m]{};//n/t}//n/tfor(int i=0;i<n;i++) for(int j=0;j<m;j++){//n/t/tcin>>mp[i][j];//n/t/tif(mp[i][j]=='S') x=i,y=j;//n/t}//n/tint maxStep=(n-1)+(m-1);//n/tdfs(x,y,0,0,maxStep);//n/tcout.put('N').put('o').put(10);//n/tfor(int i=0;i<n;i++){//n/t/tdelete[] mp[i];//n/t/tdelete[] vis[i];//n/t}//n/tdelete[] mp;//n/tdelete[] vis;//n/treturn 0;//n}/
原文地址: https://www.cveoy.top/t/topic/pP9z 著作权归作者所有。请勿转载和采集!