前言
穷竭搜索是将所有的可能性罗列出来,在其中寻找答案的方法
深度优先搜索
#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
int maze[5][5] = {
0, 1, 0, 0, 0,
0, 1, 0, 1, 0,
0, 0, 0, 0, 0,
0, 1, 1, 1, 0,
0, 0, 0, 1, 0,
};
int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};
int d[5][5];
bool flag[5][5];
void dfs(int x, int y) {
for(int i=0; i < 4; i++) {
int _x = x+dx[i];
int _y = y+dy[i];
if(_x>=0 && _x<5 && _y>=0 && _y<5 && maze[_x][_y]==0 && !flag[_x][_y]) {
flag[_x][_y] = true;
d[_x][_y] = min(d[x][y]+1, d[_x][_y]);
dfs(_x,_y);
flag[_x][_y] = false;
}
}
}
int main() {
memset(d, 0x3f, sizeof(d));
d[0][0] = 0;
dfs(0,0);
cout << d[4][4] <