正经题解|迷宫的问题
2024-03-22 11:12:26
发布于:浙江
24阅读
0回复
0点赞
【算法分析】
求最少需要多少步,考虑使用广搜。从起点开始进行搜索,规则只能向上下左右走动,当搜索到终点时就结束。
【参考代码】
#include <bits/stdc++.h>
using namespace std;
int MAP[9][9];
bool vis[9][9];
struct node {
int x, y, step;
}l,r;
int dir[4][2] = { -1,0,0,1,1,0,0,-1 };
int main() {
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 5; j++) {
cin >> MAP[i][j];
}
}
queue<node> q;
q.push({ 1,1,0 });
vis[1][1] = 1;
while (q.size()) {
r = q.front();
q.pop();
if (r.x == 5 && r.y == 5) {
cout << r.step;
return 0;
}
for (int i = 0; i < 4; i++) {
l.x = r.x + dir[i][0];
l.y = r.y + dir[i][1];
l.step = r.step + 1;
if (l.x >= 1 && l.x <= 5 && l.y >= 1 && l.y <= 5 && !vis[l.x][l.y] && MAP[l.x][l.y] == 0) {
vis[l.x][l.y] = 1;
q.push(l);
}
}
}
cout << -1;
return 0;
}
【时间复杂度】
【预计得分】
这里空空如也
有帮助,赞一个