图的遍历主要有两种方法,第一种是之前博文中介绍过的“图的深度优先遍历”,简称DFS;另一种就是图的广度优先遍历(BFS),在本文中将进行简要探讨。
BFS要做的事,从给定点出发,遍历的一次探寻到所有顶点。其基本思路很容易理解,在此我们利用队列q来存储访问的顶点,用visited[]数组(初始化所有值...
分类:
其他好文 时间:
2014-05-09 10:06:35
阅读次数:
337
本文针对迷宫问题,探讨解决思路并给出实现代码。在本文中,采用的图的深度优先搜索和广度优先搜索两种方法分别对迷宫的路径进行了求解。
首先来看迷宫问题的描述,可以参考此处,简而言之就是,通过一个二维数组(int型)来表示迷宫,迷宫中0表示可行,1表示不可行。在本文的实现中,可以输入给定迷宫,定义迷宫入....
分类:
其他好文 时间:
2014-05-09 06:38:13
阅读次数:
608
经典迷宫问题。。。STL~queue+BFS实现,给正在学习使用queue和BFS的童鞋提供一个比较好理解的模板~=w=~...
分类:
其他好文 时间:
2014-05-09 06:05:13
阅读次数:
353
1 /* 2 题意:国际象棋起点到终点移动的最少步数 3 4
题解:水题,BFS就过了,有人用双向BFS 5 */ 6 #include 7 #include 8 #include 9 10 using namespace
std;11 12 int dir[8][2]={-2,1,-1,...
分类:
其他好文 时间:
2014-05-09 05:34:20
阅读次数:
387
这是一道好题,思路虽然有,但是提交之后总是有数据过不了,又按照数据改改改,最后代码都没法看了。收到的教训是如果必须为自己的代码加上很多很多特殊的限定,来过一些特殊的数据的话,说明代码本身有很大的漏洞。
这道题,我想到了要用两个指针保存乱序的节点,甚至想到了用一个pre指针来保存前面一个节点,但是问题出在哪里呢?我觉得应该是自己对树的遍历理解的不够深刻。既然知道了二叉搜索树一定是用中序遍历的,那么...
分类:
其他好文 时间:
2014-05-09 01:54:42
阅读次数:
250
第一部分:DFS
DFS(深度优先搜索),深度优先搜索法与回溯法差不多,主要的区别是回溯法在求解过程中不保留完整的树结构,而深度优先搜索则记下完整的搜索树,搜索树起记录解路径和状态判重的作用。为了减少存储空间,在深度优先搜索中,用标志的方法记录访问过的状态,这种处理方法使得深度优先搜索法与回溯法没什么区别了。
深度优先搜索所遵循的搜索策略是尽可能“深”地搜索图。...
分类:
其他好文 时间:
2014-05-09 01:49:49
阅读次数:
304
题目链接在这题各种RE和WA。 方法上就是BFS,
还是基础不扎实的原因,很明显的一点就是这里使用二维vector, 开始的时候我竟然没有给ans分配空间,然后直接push_back,
导致RE到死。这点是必须引起注意的!附上代码: 1 /** 2 * Definition for binary ....
分类:
其他好文 时间:
2014-05-08 18:00:37
阅读次数:
292
双向BFS:
分别在 起点 和 终点同时进行BFS。
一般地,BFS随着层数的增加,状态数会越来越多,也就是状态数与层数呈正相关。如下图,:
若从两端同时进行BFS ,则有
显然减少的哪一些区域即为减掉的那些不必要的状态。
#include
#include
#include
#include
#include
#include
#include
#include ...
分类:
其他好文 时间:
2014-05-08 17:16:12
阅读次数:
300
很简单的题目,不过还是觉得要说一下。最小深度,很快想到bfs,层序遍历嘛。本科的时候实在是没写过多少代码,一开始居然想不到怎么保存一层的信息。后来想到可以压入一个特殊的对象,每次到达这个对象就知道是一层了。我用的是空指针,觉得这个适用性还是不错的。一层的节点入队结束后,应该压入一个NULL,当一层的节点都处理完,遇到NULL的时候,要在队列尾部再入队一个NULL,这是后一层的分界线嘛。
昨天在另...
分类:
其他好文 时间:
2014-05-08 11:09:28
阅读次数:
315
题意 : 找联通块的个数,Saya定义两个相连是|xa-xb| + |ya-yb|≤1
,但是Kudo定义的相连是|xa-xb|≤1 并且 |ya-yb|≤1。输出按照两种方式数的联通块的各数。思路 :
按照第一种定义方式就只能是上下左右四个位置,而第二种则是周围那8个都是相连的。 1 #incl....
分类:
其他好文 时间:
2014-05-08 07:26:59
阅读次数:
338