概述
#include<iostream>
#include<queue>
//广度优先搜索测试
//例:
//
1
//
/ |
//
/
|
//
2
3---5
//
|
//
|
//
4
//step1:将存储图的方法称为图的*邻接矩阵存储法*
// 通路用1表示,不通用-1表示,自身为0
//
1
2
3
4
5
// 1
0
1
1
-1
1
// 2
1
0
-1
1
-1
// 3
1
-1
0
-1
1
// 4
-1
1
-1
0
-1
// 5
-1
-1
1
-1
0
// step2:构造二维表
const int NUM = 100;
int road[NUM][NUM];
//记录通路
bool book[NUM];
//记录是否已经被访问
void BounTable(int n)
//初始化
{
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
road[i][j] = (i == j) ?
0 : -1;
}
void RoadSet()
//路径设置
{
road[1][2] = road[2][1] = 1;
road[1][3] = road[3][1] = 1;
road[2][4] = road[4][2] = 1;
road[3][5] = road[5][3] = 1;
road[1][5] = road[5][1] = 1;
}
void BookSet(int n)
//未访问的节点设置为true,为了防止重复访问
{
for(int i = 1; i <= n; i++)
book[i] = true;
}
//广度优先搜索
void bfsTest()
{
int n = 5, sum = 0;
//v当前节点编号;sum累计访问节点个数;n节点总个数
BounTable(n);
RoadSet();
BookSet(n);
queue<int> Pt;
Pt.push(1); book[1] = false;
while(!Pt.empty())
{
int v = Pt.front();
//访问的当前节点序号
cout << v << " ";
Pt.pop();
for(int i = 1; i <= n; i++)
{
if(road[v][i] == 1 && book[i])
{
Pt.push(i);
book[i] = false; //访问后的设为false
}
}
}
}
最后
以上就是俭朴烧鹅为你收集整理的超简单的BFS广度优先搜索代码的全部内容,希望文章能够帮你解决超简单的BFS广度优先搜索代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复