最近需要用到DFS算法,所以在网上查找相关的资料,文中的代码借鉴了以下这篇博客,并做了一些修改。
https://www.cnblogs.com/majianqiang/p/8534418.html------借鉴博客网址
做修改的内容:
1.在迷宫问题中规定二维数组最左位置是入口,最右位置是出口。到达最右位置则结束搜索。
2.path保存了搜索路径
#include<math.h>
#include<iostream>
#include<vector>
#include<map>
#include<algorithm>
#include<queue>
#define MAXL 5
using namespace std;
bool isValid(vector<vector<int> >& maze, int x, int y) {
return !maze[x][y];
}
bool maze_search(vector<vector<int> >& maze, bool(*visit)[MAXL], pair<int,int>& pos, vector<pair<int, int>>&path) {
if (pos.first == (MAXL - 1) && pos.second == (MAXL - 1))
return true;
int dir[][2] = { { 0, -1 }, { 0, 1 }, { -1, 0 }, { 1, 0 } };
for (int i = 0; i <