C++基本算法讲解之广度优先搜索(BFS)

C++基本算法讲解之广度优先搜索(BFS)

今天来讲算法了。
今天要用到基本队列,不知道的去看看我的上一次博文C++3.4数据结构之队列基础+blah数集题解


广度优先搜索(BFS)是从初始节点开始,根据搜索规则生成第一层节点,同时检查目标节点是否在这些生成的节点中。
如果没有,就要根据搜索规则向下逐一扩展,同时检查目标节点是否在这些生成的节点中。
·········
如果有,就停止搜索,
或者,如果扩展完所有节点,还没有找到目标节点,则问题无解。


看了这么一大段文字,你是不是蒙了?
简单给你讲:1.就像声波,一层一层往外扩散。直到目标节点。

2.广度优先搜索只要找到节点,就停止。因为它不像深度优先搜索,还要一条一条地比较。只要按照条件到达,层数就是最短路径。

3.可能还有如果扩展完所有节点,还没有找到目标节点的问题,所以为了减少数组越界的可能,我们可以设置数组q[m*n+2][3]。来进行搜索。q[][0]是一个节点的x坐标,q[][1]是一个节点的y坐标,q[~~][2]是到这个节点的步数,

4.地图必须有!!!

#include<bits/stdc++.h>
using namespace std;
//m=5,n=5;
const int MAXN=5*5+2;
int q[MAXN][3];
int map[5][5];

不是说过要用队列吗!
用队列的目的是一个不差扩展完所有节点
继续完整程序:

#include<bits/stdc++.h>
using namespace std;
const 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值