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

c++_csp-j算法 (2)

目录

BFS搜索(广度优先搜索)

讲解

BFS搜索算法原理

BFS搜索算法实现

BFS搜索算法的应用

例题(1)

P1032 [NOIP 2002 提高组] 字串变换

例题(2)

P1443 马的遍历


BFS搜索(广度优先搜索)

讲解

BFS搜索算法原理

广度优先搜索(BFS)算法是一种图的搜索算法,用于遍历图中的节点,并找到图中的路径。BFS算法从起始节点开始,逐层搜索直到找到目标节点,它以层级的方式搜索图,先搜索与起始节点直接相邻的节点,然后再搜索与这些节点相邻的节点,以此类推,直到找到目标节点或遍历完整个图。

BFS算法通常使用队列来实现,它先将起始节点入队,然后不断从队列中取出节点,访问这个节点,并将这个节点的邻接节点入队,直到队列为空。这样可以确保先访问距离起始节点近的节点,再访问距离起始节点远的节点,实现广度优先搜索。

BFS搜索算法实现

在C++中,我们可以用队列来实现BFS搜索算法。下面是一个简单的示例代码,展示了如何用队列实现BFS搜索算法:

#include <iostream>
#include <vector>
#include <queue>using namespace std;class Graph {
private:int V;vector<Node*> adjList;public:Graph(int v) : V(v) {adjList.resize(V, nullptr);}void addEdge(int src, int dest) {Node* newNode = new Node(dest);newNode->next = adjList[src];adjList[src] = newNode;newNode = new Node(src);newNode->next = adjList[dest];adjList[dest] = newNode;}void BFS(int v) {vector<bool> visited(V, false);queue<int> queue;visited[v] = true;queue.push(v);while (!queue.empty()) {v = queue.front();queue.pop();cout << v << " ";Node* temp = adjList[v];while (temp) {int adjNode = temp->val;if (!visited[adjNode]) {visited[adjNode] = true;queue.push(adjNode);}temp = temp->next;}}}
};int main() {Graph graph(5);graph.addEdge(0, 1);graph.addEdge(0, 4);graph.addEdge(1, 2);graph.addEdge(1, 3);graph.addEdge(1, 4);graph.ad
http://www.xdnf.cn/news/461.html

相关文章:

  • Vue中的template配置项
  • Kafka下载和使用(Windows版)
  • docker 大模型
  • 【数学】勾股定理
  • 速查手册:TA-Lib 超过150种量化技术指标计算全解 - 2. Momentum Indicators(动量指标)
  • 编译报错 宏 _IOC_SIZEBITS,而这个宏在编译时未定义
  • 2025年赣教云智慧作业微课PPT模板
  • 网络互连与互联网4
  • [Java实战经验]异常处理最佳实践
  • 【langchain4j】Springboot如何接入大模型以及实战开发-AI问答助手(一)
  • 深入剖析JavaScript内存泄漏:识别、定位与实战解决
  • BZOJ P1419 Red is good
  • 软件测试--自动化测试1
  • 如何使用flatten函数在Terraform 中迭代嵌套map
  • 【HDFS入门】HDFS性能调优实战:压缩与编码技术深度解析
  • 若依(笔记)
  • C++入门小馆: 深入string类
  • Redis启动报错(error) NOAUTH Authentication required
  • NodeRED模拟复杂流程处理
  • MACOS 上的 快捷指令怎么用,有哪些分享资源可以用
  • WSL (ext4.vhdx文件)占用空间过大,清理方式记录,同时更改 WSL 保存位置
  • 电脑 访问 github提示 找不到网页,处理方案
  • CRC实战宝典:从原理到代码,全面攻克循环冗余校验
  • 驱动-自旋锁死锁
  • Linux系统之部署TestNet资产管理系统
  • Java使用javacv实现的多种音视频格式播放器
  • 字符串系列一>二进制求和
  • 【重走C++学习之路】12、模板进阶
  • 智慧农业新视界:视频监控管理平台如何赋能现代农业
  • Trae,字节跳动推出的 AI 编程助手插件