深度优先搜索(DFS)和广度优先搜索(BFS)

matlab练习程序(广度优先搜索BFS、深度优先搜索DFS) 如此经典的算法竟一直没有单独的实现过,真是遗憾啊。 广度优先搜索在过去实现的二值图像连通区域标记和prim最小生成树算法时已经无意识的用到了,深度优先搜索倒是没用过。 这次单独的将两个算法实现出来,因为算法本身和图像没什么关系,所以更纯粹些。 广度优先搜索是从某一节点开始,搜索与其线连接的所有节点,按照广度方向像外扩展,直到不重复遍历所有节点。 深度优先搜索是从某一节点开始,沿着其搜索到的... 阅读详情

DFS和BFS

基础算法合集:
https://blog.youkuaiyun.com/GD_ONE/article/details/104061907

摘要

本文主要介绍 深度优先搜索和广度优先搜索,下文皆称为DFS和BFS。

DFS和BFS是两种搜索树和图的基本策略,见名知其义, 深搜和广搜,一种往深处搜,一种往边上搜。 DFS常用于暴力搜索所有状态,BFS常用于搜索到达某一状态的最短路径。


状态

我们将DFS和BFS搜索的东西称为状态, 状态就是一个具体问题的一个解,而将问题的所有状态关联在一起, 就能得到一个状态图,DFS和BFS就是遍历状态图的两种方式。

下面以几个具体问题来加以解释:

  1. 输出123的全排列

    对于此题,将123数列的三个位置看作三个状态,当3个位置都填满数字时,就是其中一种排列,显然,答案就是所有当搜索完所有位置的所有状态。那么我们就可以使用DFS来找出所有状态。
    部分状态图:

在这里插入图片描述
以上状态图中, 蓝色箭头是DFS的搜索顺序,对以上状态图的解释:对于第一位,有3种状态,1 2 3, 先选1, 然后看第二位, 1已经选过了,只能选2,3,选择2, 然后第三位就只剩下了3, 得到123,然后再将第二位选择为3, 则第三位为2, 得到132.
可以看到,状态图是树形结构。一个状态总能从根节点(起始状态)转移得到。

  1. 用一个3*3的二维矩阵代表一个迷宫,由0,1组成,1代表可以通过,0代表不能通过。要求找出从入口(1,1)到出口(n,n)的最短路径

    对于此题,每个可以从入口到达的点,都是一个状态,那么从一层一层的搜,到达出口时的层数就是最短路径的长度了。

    部分状态图:

在这里插入图片描述
对于以上状态图, X代表当前位置, 1 2 3代表BFS搜索的层数, 当搜索完第 1 层,搜索第 2 层,第 2 层搜索完才会搜索第 3 层。


DFS

我们已经知道DFS是沿着当前路径一直搜索下去,直到无路可走,就会返回,这被称为 回溯
我们可以利用递归的方式来实现这一回溯效果。

public class Main{
	public  static int f(int n){
		if(n == 0){
			return n; 
		}
		
		System.out.print(n+"\n");
		f(n-1);
		System.out.print(n+"\n");
		
		return n;
	}
	public static void main(String[] args) throws IOException {
		f(3);
	}
	
}
输出:
3
2
1
1
2
3

函数执行顺序:

  1. main中调用f()函数
  2. n刚开始等于 3, 先输出3 然后调用f(n-1); // 第一层函数
  3. n等于2, 输出2, 然后调用f(n-1) ; // 第二层函数
  4. n等于1, 输出1, 然后调用f(n-1); //第三层函数
  5. n等于0, 返回到上一次函数, 即第三层函数。然后输出1
  6. 然后再返回到第二层, 输出2
  7. 最后返回第一次, 输出1.
  8. f()函数结束。

这就是回溯的实质了。

看一道例题:
Red and Black

在这里插入图片描述
题目大意就是从起始位置@开始走,只能走在 . (黑砖)上面, 不能走在#(红砖)上面,问从@开始最多可以走几块 .(黑砖)。

将每个可以到达的点当作一个状态,搜索所有的状态,就可以得到答案啦。
怎么搜索呢, 只要我们得到下个点的坐标就可以了, 可以朝四个方向走,
所以,当前坐标 + (0,1) 就是向右走, + (1,0)就是向下走, + (0,-1)就是向左走, +(-1, 0)就是向上走。

然后判断一下个点是否超出边界是红砖还是黑砖,如果是黑砖,就搜索下一点,也就是DFS下一个点。
本题也可BFS。

本题坑点: @点也算一个答案。
具体看代码
C++:

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int x,y,sum=1;
int n,m; // 行   列
int next[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
char map[20][20];
int book[20][20];

void input(int n,int m){ // 读入数据,并记录@坐标
	for(int i=0;i<m;i++){
		for(int j=0;j<n;j++){
			cin>>map[i][j];
			if(map[i][j]=='@')
				x=i,y=j;
		} 
	}
}

void dfs(int x,int y){
	for(int i=0;i<4;i++){
		int gx=x+next[i][0];
		int gy=y+next[i][1];
		if(gx>=0&&gx<m&&gy>=0&&gy<n&&book[gx][gy]!=1&&map[gx][gy]=='.'){
			sum++;
			book[gx][gy]=1; // 标记已经走过。则下次不再走这个点
			dfs(gx,gy);
		}
	}
	return;
}

int main()
{
	while(cin>>n>>m&&n||m)
	{
		memset(map,0,sizeof map);
		memset(book,0,sizeof book);
		input(n,m);
		dfs(x,y);
		cout<<sum<<endl;
		sum=1;
	}
	return 0;
}

JAVA:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;

public class Main{
	static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
	static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
	static char[][] map = new char[30][30];
	static int[][] vis = new int[30][30];
	static int[][] ne = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
	static int n, m, res = 0;
	public static void dfs(int x, int y){
		vis[x][y] = 1;
		for(int i = 0; i < 4; i++){ //四个方向
			int nx = x + ne[i][0];
			int ny = y + ne[i][1];
			if(nx < 0 || nx >= m || ny < 0 || ny >= n || map[nx][ny] == '#' || vis[nx][ny] == 1){
				continue;
			}
			res++;
			dfs(nx,ny);
		}
	}
	
	public static void main(String[] args) throws IOException{
		while(true){
			
			String s[] = in.readLine().split(" ");
			n = Integer.parseInt(s[0]);
			m = Integer.parseInt(s[1]);
			if(n==0||m==0) break;
			int x = 0, y = 0;
			res = 0;
			for(int i = 0; i < vis.length; i++)
				Arrays.fill(vis[i], 0);
			for(int i = 0; i < m; i++){
				String s1 = in.readLine();
				if(s1.indexOf('@') != -1){
					x = i;
					y = s1.indexOf('@');
				}
				map[i] = s1.toCharArray();
			}
			dfs(x, y);
			out.write((res+1)+"\n");
			out.flush();
		}
	}
	
}


BFS

BFS要先搜索当前状态可以直接到达的所有状态。因为一次只能处理一个状态,所以我们需要按照先后顺序,先将可以到达的所有状态点全部存起来,因为需要满足先后的顺序,所以正好可以利用队列先进先出的特性来存储。

以下是一般的BFS模板

 public static void bfs(int x, int y){
    	q.add(x, y);  //将起点入队
    	vis[x][y] = 1; // 标记已经走过
    	res[x][y] = 0; // 标记起点的步数
    	while(!q.isEmpty()){ // 当队列不空
    		x = q.peek().x; //取出队头元素
    		y = q.peek().y; 
    		q.poll(); //删除队头元素
    		if(x == n-1 && n == m-1) return; // 到达终点
    		for(int i = 0; i < 4; i++){ // 当前点可以到达的下四个方向
    			int nx = x + dx[i]; // 下个点的坐标
    			int ny = y + dy[i]; 
    			if(nx < 0 || nx >= n || ny < 0 || ny >= m || vis[nx][ny] == 1 ) continue; // 下个点不合法
    			else{
    			    res[nx][ny] = res[x][y] + 1; // 到达下一个点的步数为此父结点的步数加1
    			    q.add(new pair(nx,ny));	//下个点合法,入队存储
    			    vis[nx][ny] = 1; // 标记该点已经走过
    			}
    		}
    	}
    }

用走迷宫来解释, 就是先把一个点可以直接到达的所有点存到一个队列里,
然后从这些点里每次出队一个,进行上述操作,直到所有可到达的点都被搜索过。

例题:
走迷宫

在这里插入图片描述
JAVA代码:

import java.io.*;
import java.util.*;


class pair{
	public int x,y;
	pair(int a, int b){
		x = a;
		y = b;
	}
}

public class Main{
    static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    static BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
 
    static final int N = 1000;
    static String[][] arr = new String[N][N];
    static int[][] pren = new int[N][N];
    static int[][] vis = new int[N][N];
    static int[][] res = new int[N][N];
    static int[] dx = {-1, 0, 1, 0};
    static int[] dy = {0, 1, 0, -1};
    static int n, m = 0;
    static Queue<pair> q = new LinkedList<>();
    
    public static int Int(String s){ return Integer.parseInt(s);}
    
    
    public static void read() throws IOException{
    	for(int i = 0; i < n; i++){
    		arr[i] = in.readLine().split(" ");
    	}
    }
    public static void bfs(int x, int y)throws Exception{
    	q.add(new pair(x, y));
    	vis[x][y] = 1;
    	res[x][y] = 0;
    	while(!q.isEmpty()){
    		x = q.peek().x;
    		y = q.peek().y;
    		q.poll();
    		for(int i = 0; i < 4; i++){
    			int nx = x + dx[i];
    			int ny = y + dy[i];
    			if(nx < 0 || nx >= n || ny < 0 || ny >= m || vis[nx][ny] == 1 || arr[nx][ny].compareTo("1") == 0) continue;
    			else{
    			    res[nx][ny] = res[x][y] + 1;
    			    q.add(new pair(nx,ny));	
    			    vis[nx][ny] = 1;
    				if(nx == n-1 && ny == m-1) return;
    			}
    		}
    	}
    }
    public static void main(String[] args) throws Exception{
    	String s[] = in.readLine().split(" ");
    	n = Int(s[0]);
    	m = Int(s[1]);
    	read();
    	bfs(0,0);
    	out.write(res[n-1][m-1]+"\n");
    	out.flush();
    }
}

刷题题目集:
POJ 1321 棋盘问题
POJ 2251 Dungeon Master
POJ 3278 Catch That Cow
POJ 3279 Fliptile
POJ 1426 Find The Multiple
POJ 3126 Prime Path
POJ 3087 Shuffle’m Up
POJ 3414 Pots
FZU 2150 Fire Game
UVA 11624 Fire!
POJ 3984 迷宫问题
HDU 1241 Oil Deposits
HDU 1495 非常可乐
HDU 2612 Find a way
题目链接

题目集题解:https://blog.youkuaiyun.com/GD_ONE/article/details/100833175

开始刷题吧!

python实现BFS(广度优先搜索)& DFS(深度优先搜索) BFS(广度优先搜索): 图1 BFS 图2 BFS 图3 Queue of BFS 图一是BFS(广度优先搜索)在树的情况下的执行过程,从A出发,搜索A的第二层,发现有B,C,D(必须从左到右搜索),再搜索B的第二层,发现B的第二层没有元素,再搜索C的第二层,发现有E,F,放置于D后面,再搜索D的第二层,发现有G,放置于F后面,再往下搜索E,F,G,发现只有G有第二层H和I,所以最后得到: A B C D E F G H I 图二是BF.. 阅读详情

相关推荐

深度优先搜索(DFS)和广度优先搜索(BFS)——c#实现

两种算法在您的迷宫项目中可以配合使用:DFS生成随机迷宫,BFS寻找最优路径,这正是大多数迷宫算法的经典实现方式。沿着分支尽可能深入,直到到达叶子节点,然后回溯探索其他分支。内存敏感/深度优先特性 → 选DFS(如迷宫生成)层级关系分析 → 选BFS(如社交网络层级分析)类似走迷宫时优先选择一条路走到黑,碰壁再回退。存在性验证 → 两者均可(如节点是否可达)需要最短路径 → 选BFS(如迷宫求解):O(V+E)(顶点数+边数):栈(Stack)或递归实现。类似水波纹扩散的效果。:队列(Queue)

山水CAD 二次开发 1254

深度优先搜索(DFS)(算法笔记)

深度优先搜索是一种枚举所有完整路径以遍历所有情况的搜索方法,总是以“深度”作为前进的关键词。实现方式是有很多,最常见的是递归。深度优先搜索属于搜索问题的一种,当问题可以被描述为“路径搜索”时,就可以采用搜素问题的所有解的方式来进行解决,所以DFS本质还是暴力。深度搜索具有两个关键词,即“岔道口”和“死胡同”,这两个词来源于迷宫问题,这也是搜索问题最原始的表现。当碰到岔道口时,总是以“深度”作为前进的关键词,不碰到死胡同就不回头,因此被称为“深搜”。

Arabot_的博客 1万+

一文搞定深度优先搜索(DFS)与广度优先搜索(BFS)【含完整源码】

写在前面:博主是一位普普通通的19届二本大学生,平时最大的爱好就是听听歌,逛逛B站。博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事,做自己以后不会留有遗憾的事,做自己觉得有意义的事,不浪费这大好的青春年华。博主写博客目的是记录所学到的知识并方便自己复习,在记录知识的同时获得部分浏览量,得到更多人的认可,满足小小的成就感,同时在写博客的途中结交更多志同道合的朋友,让自己在技术的路上并不孤单。 目录: 1.深度优先搜索(DFS) 2. .

记录博主学到的点滴 3573

蓝桥杯——深搜DFS(看完绝对入门DFS)

一文详解DFS,看完绝对入门(附练习题和详解)

m0_47963315的博客 6358

【C语言 DFS(深度优先搜索)和BFS(广度优先搜索)】

DFS(深度优先搜索)和BFS(广度优先搜索)是两种常用的图或树遍历算法。其主要思想是从起始节点开始,沿着每一个分支尽可能深入地搜索,直到找到目标节点或没有更多节点可访问,然后回溯并继续搜索其他分支。其主要思想是从起始节点开始,首先访问所有邻接节点,然后再按层次访问每个邻接节点的邻接节点。DFS 遍历顺序可能是:A -> B -> D -> E -> C -> F。BFS 遍历顺序是:A -> B -> C -> D -> E -> F。BFS 是一种遍历或搜索树或图的算法。

m0_74889573的博客 1552

Python 算法基础篇:深度优先搜索( DFS )和广度优先搜索( BFS )

深度优先搜索( DFS )和广度优先搜索( BFS )是两种常用的图遍历算法,用于在图中搜索目标节点或遍历图的所有节点。本篇博客将介绍 DFS 和 BFS 算法的基本概念,并通过实例代码演示它们的应用。

小蓝枣的博客 1万+

深度优先算法 DFS总结(算法详解+模板+例题)

沿着树的深度遍历树的节点,尽可能深的搜索树的分支。共 m+1 行,第 1 行为 2 个数,n 和 m,分别表示一共有 n(n≤105) 篇文章(编号为 1 到 n)以及m(m≤106) 条参考文献引用关系。一个如下的 6×6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。有一个 n \times mn×m 的棋盘,在某个点 (x, y)(x,y) 上有一个马,要求你计算出马到达棋盘上任意一个点最少要走几步。

Alex_Fufu的博客 1万+

【论文+CAD图纸】光储充一体化微电网设计

近些年来,我国的经济发展迅速,对能源的需求不断增长,也加重了对环境的破坏,违背了我国的可持续发展战略。所以迫切需要寻找新型能源。由于太阳能在使用时不会产生污染,所以太阳能逐渐受到人们的重视。我国的太阳能资源丰富,具有的开发利用潜力。特别是近些年“光储充”一体化充电站为高科技绿色充电模式,“以光养桩”使光伏、储能、智能充电协同,智能微电网与公共电网互动,本设计对探索清洁可再生能源在民用场合的应用,有着重大的理论和工程价值。本文综述国内外相关光伏发电的成果和发展现状;

weixin_761237174的博客 925

深度优先搜索(DFS) 总结(算法+剪枝+优化总结)

深度优先搜索(DFS) 总结(算法+剪枝+优化总结) 本文中会引用部分实例、文献资料来自不同的作者之手,由于资料整理比较困难,转载地址不在文中列举。如有侵权请联系我更换或删除!对于提供题解思路的各位大佬和作者:非常感谢! 一、前导 定义上的深度优先搜索的思路与树的先序遍历非常相似,是针对图的搜索而提出的一种算法,下面是算法导论上的解释: 在深度优先搜索中,对于最新发现的顶点,如果它还有以此为顶点而未探测到的边,就沿此边继续探测下去,当顶点v的所有边都已被探寻过后,搜索将回溯到发现顶点v有起始点的那些边

HeartFireY的博客 9万+

24V供电D1047/B817对管AB类音频功放设计与制作全解析

音频功率放大器是电子系统将微弱音频信号放大驱动扬声器的核心电路,其核心原理是通过晶体管或集成电路对信号进行电压和电流放大。从技术价值看,优秀的功放设计需兼顾效率、保真度与稳定性,AB类放大器便是经典折中方案,它在A类低失真与B类高效率间取得平衡。在应用场景上,这类电路广泛应用于家用音响、多媒体音箱、车载音频及DIY音频项目。本文聚焦于一个采用24V直流供电、以D1047和B817互补对管为核心输出级的AB类功放实例,深入剖析其**电路设计**与**元件选型**,涵盖从BC547小信号放大、偏置设置、PCB布

weixin_31355483的博客 414

告别C盘空间焦虑!Miniforge环境路径精准配置全攻略

本文深入解析Miniforge虚拟环境默认占用C盘空间的根本原因,即未正确配置`.condarc`文件中的`envs_dirs`路径优先级。通过详细的诊断步骤与配置命令,指导用户将环境路径精准迁移至指定磁盘(如D盘),并分享禁用自动激活、使用`--prefix`参数等高阶技巧,帮助开发者彻底告别C盘空间焦虑,实现虚拟环境的整洁与可控管理。

weixin_28831399的博客 238

DFS——深度优先搜索

深度优先搜索,是一种常用的图遍历算法,用于在图或树数据结构中遍历所有节点。

m0_74421524的博客 4687

从零到一:ArduPilot无人船PID调参实战指南

本文详细介绍了ArduPilot无人船PID调参的实战指南,从基础参数设定到高级调参技术,帮助用户掌握水面环境下的PID控制逻辑。通过案例分析和参数示例,解决无人船在空载、负载变化及不同水域环境中的航行问题,提升无人船的稳定性和精确度。

weixin_29266647的博客 507

深度优先搜索(DFS)和广度优先搜索(BFS)

DFS && BFS

weixin_43955293的博客 3万+

sdio wifi 移植

介绍 简单来说,sdio起源自sd标准,顾名思义就是sd的IO接口(interface)的意思,更具体的说明,sd本来是记忆卡的标准,但是现在也可以把SD卡拿来插上一些外围设备接口使用,这个就是就叫做sdio。 而且sdio本身是一种相当单纯的技术,通过sd的IO引脚来连接外部外围,并且通过sd的IO数据接位与外围传输数据,而且sd协会也推出很完整的sdio stack 驱动程序,使得sdio外围得开发与应用变得非常热门 这里我们要移植的是RTL8822cs的sdio WiFi 模块,将其移植到rk3

Enosji的博客 9610

【学术情报智库】目录学的数字化蜕变:从古籍整理到AI知识图谱的跨越

我们既是浩瀚知识的守望者,也是数字智识的开拓者。目录学数字化不是技术替代传统,而是融合创新,让学术的系统性与多样性在新媒介下焕发新的生命。以AI为桥,既要智能链接,也要人文关照——这是对自我文明的深情回应,也是新知时代的庄严约定。

高校图书馆高级系统架构师/研究馆员,推动高校AI从概念演示到可评审、可交付、可运维:路线图与立项评审、PoC交付、评测回归与上线运维(Baseline/Eval/Ops)。 1421

深度优先搜索(DFS)和广度优先搜索(BFS)两种算法c++

本文介绍了BFS和DFS两种算法及其实现过程,以及通过这两种算法解决迷宫复杂问题和七段码问题的解题思路以及完整代码展示!

CRainink的博客 1万+

第3版•系统集成项目管理工程师(中级) │ 第12章 执行过程组 ✦ 管理沟通

🥏第3版•系统集成项目管理工程师(中级) │ 第12章 执行过程组 ✦ 管理沟通

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1万+

图的广度优先搜索(BFS)和深度优先搜索(DFS)算法解析

BFS/DFS算法解析【算法入门]2018/6/21.前言和树的遍历类似,图的遍历也是从图中某点出发,然后按照某种方法对图中所有顶点进行访问,且仅访问一次。但是图的遍历相对树而言要更为复杂。因为图中的任意顶点都可能与其他顶点相邻,所以在图的遍历中必须记录已被访问的顶点,避免重复访问。根据搜索路径的不同,我们可以将遍历图的方法分为两种:广度优先搜索和深度优先搜索。2.图的基本概念2.1.无向图和无向...

weixin_40953222的博客 17万+

置顶必读(1) | 《YOLOv26实战:从入门到深度优化》专栏导读与完整目录导航(持续更新中)

🏆 本文收录于 《YOLOv26实战:从入门到深度优化》 专栏。 本专栏系统梳理并持续复现 YOLOv26 官方特性、核心改进、多任务支持、部署优化与行业落地,内容坚持 持续更新 + 深度拆解 + 工程落地导向,不仅讲“怎么用”,更讲“为什么这样设计、如何真正落地到项目中”。

**My Coding Family** 9万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

图的邻接矩阵、邻接表存储和图的广度优先搜索(BFS)、深度优先搜索(DFS)

图的邻接矩阵和邻接表表示。广度优先搜索(BFS)、深度优先搜索(DFS)及 C++ 实现。

Dong_HFUT的博客 8300

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

深度优先搜索(DFS)和广度优先搜索(BFS)(学习总结)

深度优先搜索: ①定义:是一种枚举所有完整路径以遍历所有情况的搜索方法。 ②如何实现DFS: 使用栈较麻烦。 类比斐波那契数列,可以使用递归这种方式来实现DFS。使用递归系统会调用叫系统栈的东西存放递归中的每一层状态,本质还是栈实现。 ③例子 (1)全排列 求1 2 3或1 2 3 4全排列可以使用几个for循环解决,但当求1到n(n小于等于10)用for不能解决则利用递归。 #include <iostream> using namespace std; int n; int book[20]

xiaotutuyahttp_的博客 5457

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

广度优先搜索(BFS)与深度优先搜索(DFS)的对比及优缺点

广度优先搜索(BFS)与深度优先搜索(DFS)的对比及优缺点 深搜,顾名思义,是深入其中、直取结果的一种搜索方法 如果深搜是一个人,那么他的性格一定倔得像头牛!他从一点出发去旅游,只朝着一个方向走,除非路断了,他绝不改变方向!除非四个方向全都不通或遇到终点,他绝不后退一步!因此,他的姐姐广搜总是嘲笑他,说他是个一根筋、不撞南墙不回头的家伙。 深搜很讨厌他姐姐的嘲笑,但又不想跟自己的亲姐姐闹矛盾,于...

身在边城 心在编程 2万+

C++ 图的深度优先搜索(DFS)和广度优先搜索(BFS)

一、图的深度优先搜索和广度优先搜索 1.图的深度优先搜索: 类似树的前序遍历 2.图的广度优先搜索: 类似树的层次遍历 二、实现程序: 1.Graphlnk.h #ifndef Graphlnk_h #define Graphlnk_h #include <iostream> #include <queu...

ChanJose的博客 1636
上一篇: 递归
下一篇: 最短路问题的五种算法
Androids_lost_Sheep
博客等级 码龄8年 1022粉丝 86原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值