以一个最短路问题来说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;
}
}
}
}