在一个n*n的矩阵里走,从原点(0,0)开始走到终点(n-1,n-1),只能上下左右4个方向走,只能在给定的矩阵里走,求最短步数。n*n是01矩阵,0代表该格子没有障碍,为1表示有障碍物。
int mazeArr[maxn][maxn]; //表示的是01矩阵
int stepArr[4][2] = {{-1,0},{1,0},{0,-1},{0,1}}; //表示上下左右4个方向
...
分类:
其他好文 时间:
2014-10-03 11:04:04
阅读次数:
200
BFS过程:
一:访问顶点V,并标记V为已经访问
二:顶点V入队列
三:如果队列非空,进行执行,否则算法结束
四:出队列取得对头顶点u,如果顶点未被访问,就访问该顶点,并标记该顶点为已经访问
五:查找u的第一个邻接节点w
六:如果w不存在,则转到步骤三,否则循环执行
a. 如果w没有被访问过,则先把w入队列
b.查找顶点u的下一个邻接节点,记为w,并转到步骤六
上图使用B...
分类:
其他好文 时间:
2014-10-03 02:21:33
阅读次数:
288
首先明白两个概念:
1. 深度遍历包括前中后序遍历三种;
2. 广度优先遍历就是层次遍历。
PS:
前中后序遍历,如果使用递归遍历,都很简单易理解;
如果使用非递归方式,首先想到的就应该是使用栈结构来控制整个过程,因为递归也是利用栈来实现的;
前中后序遍历的非递归方式中,后序遍历的非递归方式相比较而言,略复杂。...
分类:
其他好文 时间:
2014-10-02 12:39:03
阅读次数:
301
图的连通性问题包括:1、强连通分量。2、最小点基和最小权点基。3、双连通。4、全局最小割。5、2-SAT一、强连通分量强连通分量很少单独出题,一般都是把求强连通分量作为缩点工具。有三种算法:1、Kosaraju算法。对原图和反图分别进行一次深度优先搜索。2、Tarjan算法。用了时间戳。3、Garb...
分类:
其他好文 时间:
2014-09-30 03:11:22
阅读次数:
250
深度优先搜索(DFS, Depth-First Search)是搜索的手段之一。它从某个状态开始,不断地转移状态直到无法转移,然后退到前一步的状态,如此不断重复,直至找到最终的解。部分和问题给定整数a1、a2、……、an,判断是否可以从中选出若干个数,使它们的和恰好为k。限制条件1 ≤ n ≤ 20...
分类:
其他好文 时间:
2014-09-27 00:38:38
阅读次数:
245
详细介绍:广度优先搜索算法八:Dijkstra算法戴克斯特拉算法(Dijkstra’s algorithm)是由荷兰计算机科学家艾兹赫尔·戴克斯特拉提出。迪科斯彻算法使用了广度优先搜索解决非负权有向图的单源最短路径问题,算法最终得到一个最短路径树。该算法常用于路由算法或者作为其他图算法的一个子模块。...
分类:
其他好文 时间:
2014-09-25 00:18:07
阅读次数:
280
说说:题目的意思本质上就是给你N条无向边,若存在欧拉回路,则将其生成。无向图的欧拉回路的判断非常容易,只要判断是否每个节点都是偶数度即可。但是,对欧拉回路的生成,也就是Fleury算法,貌似有点问题。我自己在这个地方也纠结了好久。下面就来讲讲Fleury算法。
开始我觉得,就是个非常简单的深度优先搜索的问题,直接从任意一个节点,然后不断DFS即可。所以就有了如下的代码:
for...
分类:
其他好文 时间:
2014-09-24 22:22:28
阅读次数:
302
定义结点struct MGraph{ int vexs[MAXVEX]; //顶点数 int arc[MAXVEX][MAXVEX]; //邻接矩阵 int numVertex, numEdges; //定点数 边数};深度优先遍历图示 参考代码bool visi...
分类:
其他好文 时间:
2014-09-23 11:56:54
阅读次数:
293
原题地址:https://oj.leetcode.com/problems/n-queens/题意:经典的N皇后问题。解题思路:这类型问题统称为递归回溯问题,也可以叫做对决策树的深度优先搜索(dfs)。N皇后问题有个技巧的关键在于棋盘的表示方法,这里使用一个数组就可以表达了。比如board=[1, ...
分类:
编程语言 时间:
2014-09-21 13:02:00
阅读次数:
208
经典的字符串转换问题:http://codevs.cn/problem/1099/
昨天刚学了广度搜索,今天就用上了,一开始百度了一下,看到所有人都是在用双向广度搜索,现在还是很不明白双向的原理,居然不需要判重!!!速度快这个容易理解,好吧,骚年加油,今天ccf认证考试,明天再来学双向的!
首先说说这个吧,广度搜索最关键的还是这两个点:
1. 如何建立搜索树?
2. 如何判断状态重复?
...
分类:
其他好文 时间:
2014-09-21 12:11:10
阅读次数:
239