AKSZ - 广度优先搜索
2024-05-19 17:12:29
发布于:广东
9阅读
0回复
0点赞
-
示例代码
-
迷宫
#include <bits/stdc++.h>
using namespace std;
int dir[4][2] = {{0,1},{0,-1},{1,0},{-1,0}};
int n,m,step[51][51];
char a[51][51];
struct node
{
int x,y;
};
bool is_in(int x,int y)
{
return x >= 1 && x <= n && y >= 1 && y <= m;
}
void bfs()
{
memset(step,-1,sizeof(step));
queue<node> q;
q.push(node{1,1});
step[1][1] = 0;
while(!q.empty())
{
node temp = q.front();
q.pop();
for(int i = 0;i < 4;i++)
{
int tx = temp.x + dir[i][0];
int ty = temp.y + dir[i][1];
if(is_in(tx,ty) && a[tx][ty] != '#' && step[tx][ty] == -1)
{
step[tx][ty] = step[temp.x][temp.y] + 1;
q.push(node{tx,ty});
}
}
}
}
int main()
{
cin >> n >> m;
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= m;j++)
{
cin >> a[i][j];
}
}
bfs();
cout << step[n][m];
return 0;
}
全部评论 1
6
2024-05-19 来自 广东
0
有帮助,赞一个