#算法 BFS广度优先搜索

以一个最短路问题来说DFS,那就是到了一个路口,每个选择都先去尝试,走不通就返回,那BFS就是从记忆中找出一个点,把它周围的没被遍历过的点都加入记忆里。再结合队列的数据结构代替“记忆”,那就是BFS了。

BFS因为运用队列,可以用while循环+empty函数的方法使用。

代码

本代码只是遍历整个矩阵

#include<bits/stdc++/.h>
using namespace std;
typedef struct node{
    int x,y;
}node;
queue <node> Q;
bool vis[max_N][max_N];
int main(){
    node fir = {0,0};
    Q.push(fir);
    while(!Q.empty()){
        node temp = Q.front();
        Q.pop();
        for(int i = 0; i < 相邻点的数量; i++){
            if(vis[当前点的x坐标][当前点的y坐标]){
                node pu = {当前点的x坐标,当前点的y坐标};
                Q.push(pu);
                vis[当前点的x坐标][当前点的y坐标] = true;
            }
        }
    }
}