#include<iostream> using namespace std; const int N=1e2+2; int n,m,x1,ye,x2,y2,mi=N; int g[N][N]; int dx[4]={-1,0,1,0}; int dy[4]={0,-1,0,1}; void dfs(int a,int b,int step){ if(a==x2&&b==y2){ if(step<mi){ mi=step; return; } } for(int i=0;i<4;i++){ int x,y; x=a+dx[i]; y=b+dy[i]; if(g[x][y]==1){ g[x][y]=0; dfs(x,y,step+1); g[x][y]=1; } } return; } int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>g[i][j]; } } cin>>x1>>ye>>x2>>y2; dfs(x1,ye,0); cout<<mi; return 0; }
时间: 2024-04-13 09:27:38 浏览: 47
#include <iostream>
这段代码是一个使用深度优先搜索(DFS)解决迷宫问题的简单示例。代码中定义了一个二维数组`g`来表示迷宫,其中1表示可以通过的路径,0表示墙壁。通过DFS函数来遍历迷宫,当到达目标位置`(x2, y2)`时,更新最小步数`mi`。在每一步中,根据四个方向的偏移量`(dx, dy)`来判断下一步是否可以继续前进。如果下一步是可行的,则标记为已经访问过,并继续递归地调用DFS函数。当完成DFS遍历后,输出最小步数`mi`。
在主函数中,首先读取输入的迷宫大小、迷宫内容以及起始位置和目标位置。然后调用DFS函数进行搜索,并输出最小步数。
如果你对代码有任何疑问,请随时提问。
阅读全文