本章内容学习了图的结构及其应用,今天就学习的图的应用中的两种搜索方法“深度优先搜索”和”广度优先搜索“及对应的练习来给大家分享一下自己的心得。 题目如下: 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N?1编号。进行搜索时,假设我们总是从编号最小的顶点 ...
分类:
其他好文 时间:
2019-05-18 09:27:25
阅读次数:
109
图的遍历 1. 在图中有回路,从图中某一顶点出发访问图中其它顶点时,可能又会回到出发点,而图中可能还剩余有顶点没有访问到。 2. 我们可以设置一个全局型标志数组visited来标志某个顶点是否被访问过,未访问的值为0,访问过的值为1。 3. 图的遍历有两种方法:深度优先搜索遍历(DFS)、广度优先搜 ...
分类:
编程语言 时间:
2019-05-16 12:37:20
阅读次数:
176
方法一:回溯法(用递归) 最基本可以将triangle数组看做一个邻接矩阵的变形,采用深度优先搜索的方法自顶向下遍历,如果triangle数组长度为n那么时间复杂度为O(2^n)(或者如果元素个数为N,那么复杂度N(log(N)) 方法二:动态规划 自底向上递推:可以使用一维数组来完成,从而O(n) ...
分类:
其他好文 时间:
2019-05-06 10:34:35
阅读次数:
178
1 //1 使用邻接表 时间复杂度: O(n+e) 2 //递归 3 public void DFS(int v) 4 { 5 System.out.print(this.vexs[v].data + " "); 6 this.visited[v] = true; 7 8 for(ArcNode p... ...
分类:
编程语言 时间:
2019-05-05 21:53:10
阅读次数:
791
在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达。现在有一份全国高铁模拟图,要从某个城市(顶点)开始,沿着铁轨(边)移动到其他城市(顶点),有两种方法可以用来搜索图:深度优先搜索(DFS)和广度优先搜索(BFS... ...
分类:
编程语言 时间:
2019-04-29 19:00:29
阅读次数:
160
建立一个哈希表,每次查找,如果对应的列col,行row,小方格box中的数出现第二次,那么数独不合法; 据说还有深度优先搜索的方法,表示没有听懂:) ...
分类:
其他好文 时间:
2019-04-13 21:40:37
阅读次数:
152
当初刚学搜索的时候,搜索是把我搞得一脸懵,知道原理,敲不出代码,后来看大神的题解,写了几道题才搞懂深度优先搜索。 搜索!很暴力! 搜索算法是利用计算机的高性能来有目的的穷举一个问题解空间的部分或所有的可能情况,从而求出问题的解的一种方法。在竞赛中,搜索法还被当做“救命稻草”——大多数问题都可以使用搜 ...
分类:
其他好文 时间:
2019-04-12 21:54:31
阅读次数:
203
1、深度优先搜索(DFS)+回溯 最基本的板子: 适用类型①:求可行解数量 https://www.luogu.org/problemnew/show/P1605 #include <iostream> using namespace std; //上下左右 int direction[4][2] ...
分类:
其他好文 时间:
2019-04-02 00:26:03
阅读次数:
243
题目链接http://bailian.openjudge.cn/practice/2790/ 算法分析 这道题目是典型的迷宫问题。要判断出发点到终止点是否可到达,应该优先考虑广度优先搜索算法。当然,深度优先搜索也可以解决,但是要注意:这里仅仅判断是否可到达,故在深搜过程中不需要回溯。 广搜代码: 1 ...
分类:
其他好文 时间:
2019-03-31 09:52:21
阅读次数:
190