DFS思想

深度优先搜索(缩写DFS)是对一个连通图进行遍历的算法。它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底,这种尽量往深处走的概念即是深度优先的概念。

DFS可以用到队列也可不用对列,具体的可以由题目的情况而定;

在对列的使用中,队列提供了一个位置使得在几个方向的前进得以同时进行,也就是说我么在检索的时候,由于我们同时开花,因此在到达我们设定的跳出的条件时,我们就能能够得到最优的那一条路径。

要注意的点如下

  • 使用队列,每次执行后,须将队列的首元素山区,这样才可不断的遍历下去;
  • 一般设置两个数组(有时也可一个数组即可)一个char 的Game_map存放地图;一个int的record_way记录当前路线所走过的位置(其他的路线人可以走这个地方);
  • 判断条件一定要清晰且完全;
  • 全局变量的设置和使用,全局变量在完成一次执行时,必需重置或释放;

在不使用对列的情况下,我们就需要用到函数去不断迭代,在这中请况下,我们就不能直接的得到最有的那一条路径,但一般用来寻找可达的地点(虽然第一种也可以,但较为复杂);

要注意的点如下

  • 注意跳出的条件;
  • 全局变量的设置和使用,全局变量在完成一次执行时,必需重置或释放;
时间: 2024-10-11 23:02:32

DFS思想的相关文章

Leetcode 17 Letter Combinations of a Phone Number - DFS思想

Given a digit string, return all possible letter combinations that the number could represent. A mapping of digit to letters (just like on the telephone buttons) is given below. Input:Digit string "23" Output: ["ad", "ae", &q

DFS,BFS算法

粗略的讲一下这两种算法,为老年痴呆做好准备(ノへ ̄.) DFS: 如上图,你将搜索整张图,而DFS的搜索方法就是,先一味的往前走!走到某个尽头后发现无路可走,后退.咦?后退一步有一个分岔口,这里有多个支路,选择一条没走过的继续走,碰到死胡同,后退,又到了这个分岔口,再去选择没走过的路,直到无路可走,然后返回上一个分岔口.具体过程如下:                                                                       (图中黑色数字均为遍历

递归基础—组合数 / 排列数—输出的各种办法(dfs/递归/bfs)

B: 部分和问题***(注意部分和 ! = 任意子区间求和不一样) 描述   给你N个数,问你能不能从其中取出一些,让它们的和为K. 输入 第一行包括两个数,N,K,分别代表数字个数,以及和为K. 接下来N行,每行一个数字. 输出 如果能选出一些数和为K, 输出YE5,  否则,输出N0 样例 输入: 4 0 1 -1  2  3 输出: YE5 输入: 2 2 1 -3 输出: N0 本题求组合数和,注意pe之外,思维比较基础,办法很多,以下为利用dfs思想实现的一种办法 如果求组合数输出各种

F - 棋盘问题

F - 棋盘问题 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 1321 Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. Input 输入含有多组测试数据. 每

[LeetCode] 200. Number of Islands 解题思路

Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by

ZOJ 2412 Farm Irrigation

Farm Irrigation Time Limit: 2 Seconds      Memory Limit: 65536 KB Benny has a spacious farm land to irrigate. The farm land is a rectangle, and is divided into a lot of samll squares. Water pipes are placed in these squares. Different square has a di

leetcode题解日练--2016.7.16

日练三题,冰冻三尺非一日之寒. 今日题目:1.顶端迭代器:2.完美平方数:3.根节点到叶节点数字和. 今日摘录: 人生是一场旅程.我们经历了几次轮回,才换来这个旅程.而这个旅程很短,因此不妨大胆一些,不妨大胆一些去爱一个人,去攀一座山,去追一个梦--有很多事我都不明白.但我相信一件事.上天让我们来到这个世上,就是为了让我们创造奇迹 ---<大鱼海棠> 284. Peeking Iterator | Difficulty: Medium Given an Iterator class inter

[leedcode 200] Number of Islands

Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by

A Knight&#39;s Journey

Description Background The knight is getting bored of seeing the same black and white squares again and again and has decided to make a journey around the world. Whenever a knight moves, it is two squares in one direction and one square perpendicular