1,bfs 是个什么玩意???

这是百度对于bfs的描述,太复杂了?没关系,我用一个走迷宫的题目来带大家了解bfs;
题目


对应代码
memset(d, -1, sizeof d);
d[0][0] = 0;

相关代码
可以使用方向向量的方式
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};

const int N = 110;
int n, m;
int g[N][N];
int d[N][N];
PII q[N * N];
int bfs(){
int hh = 0, tt = 0;
q[0] = {0, 0};
memset(d, -1, sizeof d);
d[0][0] = 0;
int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};
while(hh <= tt)
{
auto t = q[hh ++];
for(int i = 0; i < 4; i++)
{
int x = t.first + dx[i], y = t.second + dy[i];
if(x >= 0 && x < n && y >= 0 && y < m && g[x][y] == 0 && d[x][y] == -1)
{
d[x][y] = d[t.first][t.second] + 1;
q[++ tt] = {x, y};
}
}
}
return d[n - 1][m -1];
}
总结
我对于他的理解有点像是波纹一样(波纹疾走 )
谢谢大家

本文通过一个走迷宫的题目介绍了BFS(广度优先搜索)算法,利用方向向量的方式进行路径探索。代码示例展示了如何初始化、更新距离矩阵并进行遍历,最终找到最短路径。BFS的特点在于像波纹一样层层展开搜索,适用于寻找最短路径或最小代价解的问题。
4841





