dfs深度优先搜索一条路走到头在回溯走别的路经典的走迷宫问题代码如下#includebits/stdc.h using namespace std; int p,q; int mins1e9; int a[100][100]; int v[100][100]; int dx[4]{1,-1,0,0}; int dy[4]{0,0,1,-1}; void dfs(int x,int y,int step) { if(xpyq) { if(stepmins) { minsstep; return; } } for(int i0;i4;i) { int nxxdx[i]; int nyydy[i]; if(a[nx][ny]1v[nx][ny]0) { v[nx][ny]1; dfs(nx,ny,step1); v[nx][ny]0; } } return; } int main() { int stratx,straty; int m,n; cinmn; for(int i1;im;i) { for(int j1;jn;j) { cina[i][j]; } } cinstratxstratypq; v[stratx][straty]1; dfs(stratx,straty,0); coutminsendl; return 0; }从中我们可以看出这是一个递归从stratx,straty)坐标开始用dfs找如果下一个坐标可以走且未被标记那么就标记这个坐标继续dfs如果不能走就回溯到上一步取消标记像其他三个方向查找最终找到终点记录步数。注dx[4]{1,-1,0,0}dy[4]{0,0,1,-1}这是表示坐标的上下左右四个方向