题意:给定一张地图,并且给定起点和终点,求起点到终点的最短距离,地图上有墙,与以往的题目不同的是,以往的题目障碍物都是在格子上,但是本题的障碍物墙是在格子与格子的边界线上,所以在输入的时候就要进行预处理下,将墙的位置转化为相邻格子的东西南北方向墙的状态,所以使用了一个3为数组来记录地图的信息map[x][y][0]-map[x][y][3] 分别表示坐标为x,y的格子的四个方向墙的情况,0为没墙,1为有墙,然后一个dfs找到最短路,以及每个点的前驱节点,最后打印路径。代码中的注释很详细。题目本身很简单,就是...
分类:
其他好文 时间:
2014-05-09 02:19:55
阅读次数:
454
第一部分: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
奇偶剪枝:
对于从起始点 s 到达 终点 e,走且只走 t 步的可达性问题的一种剪枝策略。
如下列矩阵 :
从任意 0 到达 任意 0,所需步数均为偶数,到达任意 1 ,均为奇数。反之亦然
所以有,若s走且只走 t 步可到达e,则必有t >= abs(s.x - e.x) + abs(s.y - e.y),且 (t&1) == ((abs(s.x - e.x) + abs(s.y - ...
分类:
其他好文 时间:
2014-05-08 17:31:15
阅读次数:
305
双向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
题目来源:HDU 4240 Route Redundancy
题意:求最大流与一条流最大的路径的比值 前者最大流求出 后者是每一条路的最小值再取大
思路:我用的是dinic 可以在DFS的时候在传递一个参数 表示当前增广路可以通过最大的流量 然后当x==t 到达汇点时 在取他们的最大值
#include
#include
#include
#include
#include
usi...
分类:
其他好文 时间:
2014-05-08 10:58:21
阅读次数:
319
上一篇刚刚学习了C++图的实现,今天对深度优先搜索(DFS)进行了一定学习,并作出一定实现。在本文中图的实现,以及相应的函数调用(如获得第一个邻接顶点、获得下一个邻接顶点等)均是基于上文中的实现,故如果想参考测试代码,还需导入上文中相应的类定义。关于C++图的实现可参考此处,这里实现了对图的邻接表....
分类:
其他好文 时间:
2014-05-08 09:06:19
阅读次数:
296
题意 : 找联通块的个数,Saya定义两个相连是|xa-xb| + |ya-yb|≤1
,但是Kudo定义的相连是|xa-xb|≤1 并且 |ya-yb|≤1。输出按照两种方式数的联通块的各数。思路 :
按照第一种定义方式就只能是上下左右四个位置,而第二种则是周围那8个都是相连的。 1 #incl....
分类:
其他好文 时间:
2014-05-08 07:26:59
阅读次数:
338
参考算法导论第三版中译本,DFS的Pseudocode如下: 1 DFS(G) 2 for
each vertex u ∈ G.V 3 u.color = WHITE 4 u.π = NIL 5 time = 0 6 for each ve...
分类:
其他好文 时间:
2014-05-08 06:44:52
阅读次数:
380