做个记录:

BFS——queue实现

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;#define N 100struct Graph
{int vexnum;int arcnum;char vexs[N];int arcs[N][N];
};int Loc_vexs(Graph G, char a)
{for(int i=1;i<=G.vexnum;i++){if(G.vexs[i] == a){return i;}}
}void Input(Graph &G)
{cin>>G.vexnum;cin>>G.arcnum;for(int i=1;i<=G.vexnum;i++){cin>>G.vexs[i];}for(int i=1;i<=G.vexnum;i++){for(int j=1;j<=G.vexnum;j++){G.arcs[i][j] = 0;}}for(int i=1;i<=G.arcnum;i++){char a,b;cin>>a>>b;int x = Loc_vexs(G,a);int y = Loc_vexs(G,b);G.arcs[x][y] = 1;}
}void Bfs(Graph G)
{int v[N];memset(v,0,sizeof(v));queue<int> q;q.push(1);v[1] = 1;cout<<G.vexs[1]<<" ";while(!q.empty()){int u = q.front();for(int i=1;i<=G.vexnum;i++){if(!v[i] && G.arcs[u][i]==1){cout<<G.vexs[i]<<" ";v[i] = 1;q.push(i);}}q.pop();}cout<<endl;
}int main()
{Graph G;Input(G);Bfs(G);return 0;
}

bfs递归还未实现

DFS——stack实现

#include<iostream>
#include<cstring>
#include<stack>
using namespace std;#define N 100struct Graph
{int vexnum;int arcnum;char vexs[N];int arcs[N][N];
};int Loc_vexs(Graph G, char a)
{for(int i=1;i<=G.vexnum;i++){if(G.vexs[i] == a){return i;}}
}void Input(Graph &G)
{cin>>G.vexnum;cin>>G.arcnum;for(int i=1;i<=G.vexnum;i++){cin>>G.vexs[i];}for(int i=1;i<=G.vexnum;i++){for(int j=1;j<=G.vexnum;j++){G.arcs[i][j] = 0;}}for(int i=1;i<=G.arcnum;i++){char a,b;cin>>a>>b;int x = Loc_vexs(G,a);int y = Loc_vexs(G,b);G.arcs[x][y] = 1;}
}void Dfs(Graph G)
{int v[N];memset(v,0,sizeof(v));stack<int> s;s.push(1);v[1] = 1;cout<<G.vexs[1]<<" ";while(!s.empty()){int u = s.top();int flag = 0;for(int i=1;i<=G.vexnum;i++){if(!v[i] && G.arcs[u][i]==1){s.push(i);cout<<G.vexs[i]<<" ";v[i] = 1; flag = 1;  break;  // 仅此于bfs不同}}if(flag==0)  // 标记 u 此时为最深处 ,开始回溯 {s.pop();}}
}int main()
{Graph G;Input(G);Dfs(G);return 0;
}

DFS——递归实现


#include<iostream>
#include<cstring>
using namespace std;#define N 100struct Graph
{int vexnum;int arcnum;char vexs[N];int arcs[N][N];
};int Loc_vexs(Graph G, char a)
{for(int i=1;i<=G.vexnum;i++){if(G.vexs[i] == a){return i;}}
}void Input(Graph &G)
{cin>>G.vexnum;cin>>G.arcnum;for(int i=1;i<=G.vexnum;i++){cin>>G.vexs[i];}for(int i=1;i<=G.vexnum;i++){for(int j=1;j<=G.vexnum;j++){G.arcs[i][j] = 0;}}for(int i=1;i<=G.arcnum;i++){char a,b;cin>>a>>b;int x = Loc_vexs(G,a);int y = Loc_vexs(G,b);G.arcs[x][y] = 1;}
}int v[N];void Dfs(Graph G,int x)
{cout<<G.vexs[x]<<" ";v[x] =1;for(int i=1;i<=G.vexnum;i++){if(!v[i] && G.arcs[x][i]==1){Dfs(G,i);}}
} int main()
{Graph G;Input(G);memset(v,0,sizeof(v));Dfs(G,1);  // 假设从vexs[1] 开始 return 0;
}

Graph——bfs,dfs相关推荐

  1. 邻结矩阵的建立和 BFS,DFS;;

    邻结矩阵比较简单,, 它的BFS,DFS, 两种遍历也比较简单,一个用队列, 一个用数组即可!!!但是邻接矩阵极其浪费空间,尤其是当它是一个稀疏矩阵的时候!!!-------------------- ...

  2. [Leetcode][第785题][JAVA][判断二分图][BFS][DFS]

    [问题描述][中等] [解答思路] 1. DFS 深度优先遍历 时间复杂度:O(N+M) 空间复杂度:O(N) class Solution {private static final int UNC ...

  3. 深度搜索 java_java实现的深度搜索与广度搜索算法BFS,DFS以及几种最短路径算法...

    java实现的深度搜索与广度搜索算法BFS,DFS以及几种最短路径算法 public class City { String name; int id; static int idCounter = ...

  4. LeetCode 1263. 推箱子(BFS+DFS / 自定义哈希set)

    文章目录 1. 题目 2. 解题 2.1 超时解 2.2 BFS + DFS 1. 题目 「推箱子」是一款风靡全球的益智小游戏,玩家需要将箱子推到仓库中的目标位置. 游戏地图用大小为 n * m 的网 ...

  5. LeetCode 1034. 边框着色(BFS/DFS)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 给出一个二维整数网格 grid,网格中的每个值表示该位置处的网格块的颜色. 只有当两个网格块的颜色相同,而且在四个方向中任 ...

  6. 全局路径规划:图搜索算法介绍1(BFS/DFS)

    对于全局路径规划的设计,我们先要了解什么是图搜索,在此之前,要先知道什么是图: 可以看到,图有很多种,有无向图,有向图,节点之间还可以有不同的weight, 用于表述从节点与节点直接迁移的代价. 而图 ...

  7. 【八数码问题】基于状态空间法的知识表示与状态搜索:无信息搜索(BFS/DFS) 启发式搜索(A*)

    前言 一.问题引入 二.状态空间法 1. 知识及其表示 2. 状态空间法定义 3. 问题求解 三.基于状态空间搜索法解决八数码问题 1. 八数码问题的知识表示 2. 状态空间图搜索 1. 无信息搜索 ...

  8. bfs dfs 搜索入门模板题

    bfs & dfs 题目链接:https://vjudge.net/contest/404511 1.最短路(bfs) (1)一维最短路 D - Catch That Cow 题目大意: 在一 ...

  9. 动态规划+BFS+DFS+回溯+红黑树+排序+链表+位运算(B站优质学习资源链接,后续会继续更新)

    动态规划 正月点灯笼(UP主) 个人主页 https://space.bilibili.com/24014925/channel/detail?cid=12580 动态规划第一讲 https://ww ...

  10. 【python3数据结构】图Graph及DFS(深度优先搜索)BFS(广度优先搜索)

    Graph 和 Vertex 构建基于邻接列表: # -*- coding: utf-8 -*- # @Date : 2019/12/1 # @File : AdjListGraph.pyimport ...

最新文章

  1. String.fromCharCode()
  2. 院士王坚:坚持你相信的事,相信你坚持的事
  3. Dell服务器相关操作
  4. CocoaPods 安装与使用教程
  5. 802.11n兼容a/b/g问题(Legacy mode,Mixed mode,Greenfield mode)
  6. Android开发之PCM录音实时播放的实现方法 | 边录音边播放 |PCM录音播放无延迟 | 录音无杂音 | 录音无噪音
  7. linux系统下ntp网络时钟服务器(NTP服务器)的搭建和使用
  8. bat文件如何将一段文字放入剪切板?
  9. 在vSphere Client使用模板部署虚拟机 系统硬盘空间扩展
  10. OCR 脱机手写汉字识别与印刷汉字识别
  11. MSP430项目设计:2020年TI杯大学生电子设计竞赛 坡道行驶电动小车(C题)循迹小车(分享项目展示视频与源码)
  12. lstm 预测诗歌_预测诗歌运动
  13. 《Windows》Windows桌面设置
  14. 怎么操作信任另一台计算机,电脑上怎么设置信任软件
  15. 恒峰祥可信讲述拼多多电商店铺推广和商品推广有什么不同
  16. php 实现保留两位小数
  17. 2022年ISO27001资质认证补贴政策汇总
  18. 8421.5421.2421.余3码的区别
  19. 微型计算机原理_课后答案,微机原理课后习题标准答案
  20. php 时间随机数,PHP——生成随机数和日期时间

热门文章

  1. 送给队友的一个汉堡包
  2. android 实现应用程序后台运行的说明
  3. VMware vSphere client 5.1登录出现这个错误:客户端无法向服务器发送完整请求
  4. 泛型方法,java map按照value值来比较大小并且返回最终结果
  5. 西班牙夺得欧洲杯给IT业的十条启示
  6. H3C模拟器simware搭建总结
  7. php有的图片显示不出来,图片显示不出来,但是数据库里有显示
  8. python所有第三方库_自动更新Python所有第三方库
  9. flask与js交互的示例代码_用Python做交互式图形
  10. hbase shell删除一行_HBase安装phoenix实战shell操作