当前位置: 首页 > wzjs >正文

政府网站建设总结报告北京百度科技有限公司电话

政府网站建设总结报告,北京百度科技有限公司电话,沈阳健网站,中英网站源码下载1.什么是广度优先搜索? 广度优先搜索(Breadth-First Search,简称BFS)是一种遍历或搜索树和图的算法,也称为宽度优先搜索,BFS算法从图的某个节点开始,依次对其所有相邻节点进行探索和遍历,然后再…

 1.什么是广度优先搜索?

广度优先搜索(Breadth-First Search,简称BFS)是一种遍历或搜索树和图的算法,也称为宽度优先搜索,BFS算法从图的某个节点开始,依次对其所有相邻节点进行探索和遍历,然后再对这些相邻节点的相邻节点进行探索,直到遍历完所有的节点。

2.c++与c语言的实现的不同

c++ BFS算法使用队列来辅助实现,c语言往往通过数组来辅助实现(后面会有不同的样例来解释不同的语言的实现形式)c语言看起来可能有点啊难理解,需要通过模拟队列!

3.BFS的使用场景

一般来说广度优先搜索适用于解决两点之间的最短路径问题

广度优先搜索是从起点出发,以起点为中心,一圈一圈搜索的,一旦找到终点,记录之前走过的节点,这样就是一条最短路径

BFS常用于寻找最短路径,数据小的最短路径可以用DFS,大点的用DFS会超时,之前写过一道,这样子的题型

DFS/BFS算法在蓝桥杯竞赛中很常见。几乎每一年都会考到DFS/BFS算法!

4.BFS的使用步骤

将起始节点放入队列中,然后将起点标记为已经访问过,然后依次取出队列中的节点,访问其相邻节点,并将其加入队列。这样可以保证从起始节点出发,依次按照距离顺序遍历节点。因为它按照从起点到每个节点的距离来探索节点。

BFS算法通常使用队列来实现,BFS算法的具体步骤如下:

  1. 创建一个队列,将起始节点加入队列;
  2. 创建一个集合,用于存储已经访问过的节点;
  3. 从队列中取出一个节点,并将其标记为已访问;
  4. 访问该节点的所有相邻节点,如果相邻节点未被访问,则将其加入队列;
  5. 重复步骤3和步骤4,直到队列为空。

5.算法模板:

首先我们需要一个队列来辅助BFS实现,还需要一个初始化的输入数组,还有一个标记数组。先找到BFS的起点跟终点,确定好之后,先把起点vis==1,把起点入队,然后进入BFS函数,进入BFS函数一般先是一个大while循环,来管理队列的入队、出队。由于点都是二维的,我们一般都是用pair或者结构体来表示点,新建一个点来存储队头的信息,存完就可以让队头出队了。然后判断是否到达了目标结点,一个if判断,下面就是跟dfs一样,一个for循环遍历周围所有的点,不合法的直接continue掉,合法的标记完vis后入队,有的题目会有回溯,像在部分最短路搜索。

queue<node> q;
void bfs(){while(!q.empty()){node tmp=q.top();//node为(x,y)结构体q.pop();//出队if(到达目标终点){更新return;}//有的会有剪枝for(int i=0;i<m;i++){//m个方向int dx=tmp.x+bx[i];int dy=tmp.y+by[i];if(下标越界){continue;}if(已经被标记过了){continue;}//否则就是合法的vis[dx][dy]=1;//先标记q.push(node{dx,dy});//再新点入队}}
}

6.例题讲解 

P1135 奇怪的电梯 - 洛谷

 这里有一个需要注意的地方for输入的时候要记得从1开始因为上下娄底要用到这个准确的位置下标

#include<bits/stdc++.h>
using namespace std;
#define N 400
int a[N];//接收上下楼梯的值
int visu[N];//判断当前楼层是否被访问
int n, Start, End;
struct pos {//表示当前状态int level;//目前的当层楼层int step;//到当前楼层的步数
};
void bfs();
int main() {while (cin >> n) {if (n == 0)break;cin >> Start >> End;for (int i = 1; i <= n; i++) {visu[i] = 0;cin >> a[i];}bfs();}return 0;
}
void bfs() {pos cur, next;//定义两个变量cur.level = Start;//接受初始值的楼梯层数状态cur.step = 0;queue<pos>qu;//队列qu变量qu.push(cur);//输入curvisu[Start] = 1;//表示当前楼层已经被访问while (!qu.empty()) {//如果队列不为空cur = qu.front();//cur接受首元素位置qu.pop();//弹出首元素位置if (cur.level == End) {//如果起点等于终点//打印当前步数(开始错在此处,因为写成start1==end,start1是没有变化的,所以不行)printf("%d", cur.step);return;}next.level = cur.level + a[cur.level];//向上走next.step = cur.step + 1;//步数加一if (next.level <= n) {if (visu[next.level] == 0) {visu[next.level] = 1;qu.push(next);}}next.level = cur.level - a[cur.level];next.step = cur.step + 1;if (next.level >= 1) {if (visu[next.level] == 0) {visu[next.level] = 1;qu.push(next);}}}cout << "-1" << endl;//最后实在没有找到返回-1return;
}

已补上c语言表现形式

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int n, start, next;
int a[1000], vis[1000];
struct pos {int h, step;
}q[1000];
void bfs() {int front = 1, rear = 1;q[rear].h = start;q[rear].step = 0;rear++;vis[start] = 1;while (front < rear) {struct pos cur, net;cur = q[front];front++;if (cur.h == next) {printf("%d", cur.step);return;}net.h = cur.h + a[cur.h];net.step = cur.step + 1;if (net.h <= n && net.h >= 1 && vis[net.h] == 0) {vis[net.h] = 1;q[rear] = net;rear++;}net.h = cur.h - a[cur.h];net.step = cur.step + 1;if (net.h <= n && net.h >= 1 && vis[net.h] == 0) {vis[net.h] = 1;q[rear] = net;rear++;}}printf("-1");return;
}
int main() {scanf("%d%d%d", &n, &start, &next);for (int i = 1; i <= n; i++)scanf("%d", &a[i]);bfs();return 0;
}

http://www.dtcms.com/wzjs/151354.html

相关文章:

  • 河南企业网站建设价格百度代理授权查询
  • 南通做网站找谁郑州发布最新通告
  • 网站开发企业组织结构今日国际重大新闻
  • 网站开发策略都有啥句容市网站seo优化排名
  • wifi小程序源码优化关键词首页排行榜
  • 腾讯公司网站百度一下官网首页登录
  • 中国住房和城乡建设部网站资质查询北京关键词优化报价
  • 即墨网站建设网站优化排名方法
  • 镜像网站怎么做营销型企业网站有哪些
  • 太原定制网站建设制作公司电商怎么做?如何从零开始学做电商赚钱
  • wordpress页脚设置整站seo服务
  • 网站高端建设开发公司google play store
  • 简约型网站建设重庆百度快照优化
  • 商城网站的开发怎么做软文案例大全
  • 网站二次开发合同互联网营销的十五种方式
  • 网站建设方案封面seo的内容怎么优化
  • 大连网站设计选仟亿科技优化关键词规则
  • 校园门户网站 建设怎么seo关键词优化排名
  • 网络科技公司培训骗局汕头seo排名收费
  • 使用nas建设网站网站编辑怎么做
  • 海南省城乡建设厅网站广告平台网
  • 网站高端设计公司免费收录平台
  • 北京网站改版要注意什么重庆seo技术教程博客
  • 亿景网站建设关键词优化价格表
  • 上传网站信息问题推销一个产品的方案
  • 怎样做自己的个人网站厦门seo顾问屈兴东
  • 攀枝花网站推广抖音搜索关键词排名查询
  • DW网站建设出现哪些问题西安发布最新通知
  • 判断网站cms北京seo相关
  • 兰州网站建设报价网站建设与管理就业前景