- 深度优先搜索(DFS)概述
- DFS 是一种用于遍历或搜索图(包括树,树是一种特殊的图)的数据结构的算法。在 C 语言中实现 DFS 主要用于解决诸如迷宫求解、图的连通性判断、寻找图中的路径等问题。
- 它的基本思想是从起始顶点开始,沿着一条路径尽可能深地探索下去,直到无法继续或者达到目标节点,然后回溯到前一步,继续探索其他路径。
DFS是一种暴力的采取递归的方式来解决问题的手段适用于长度适中的求解问题。
例如一个简单的求最短路径问题:求表格中从起点走到终点所需的最少步数?
- 建立一个简易图表,将每个格子中的值记录为0,并定义一个最小步数用于统计(定义的时候往大的去定义,并不是实际最小步数)
#include <stdio.h> int map[5][5] = { 0 }; /*找出最短路径 {0,0,0,0,0} {0,0,0,0,0} {0,0,0,0,0} {0,0,0,0,0} {0,0,0,0,0} */ int minstep = 9999999999;
- dfs函数的书写
void dfs(int map[5][5],int x,int y,int step) { //是否到达终点 if (map[x][y] == 2) { minstep &#