题目: "传送门" 题外闲话 这道题是一个$DFS$(深度优先搜索 $Depth$ $Frist$ $Sreach$)的题目,可是…我就是不想敲递归(~~我绝对不会告诉你我是想偷懒的~~),于是就有了这个程序和这篇题解…… 题目分析 首先,这是一个二维的题目,要寻找8个方向,如下图所示: | ( 1 ...
分类:
其他好文 时间:
2020-02-03 13:39:17
阅读次数:
50
PAT (Advanced Level) 大纲 在达到乙级要求的基础上,还要求: 具有充分的英文阅读理解能力; 理解并掌握基础数据结构,包括:线性表、树、图; 理解并熟练编程实现经典高级算法,包括哈希映射、并查集、最短路径、拓扑排序、关键路径、贪心、 "深度优先搜索" 、广度优先搜索、回溯剪枝等; ...
分类:
其他好文 时间:
2020-02-02 21:41:12
阅读次数:
102
面向对象进阶小结 一、面向对象进阶小结 面向对象最本质解决的问题就是:提供可扩展性 类与对象:程序中必须现有类,再有对象 类中有属性,有方法 绑定方法:定义在类内部,没有装饰器装饰的方法都是对象的绑定方法,需要对象来调用,对象调用的时候,会把自身传入 1.1 类的继承 继承父类,则会有父类的所有属性 ...
分类:
其他好文 时间:
2020-02-01 23:03:25
阅读次数:
71
前言 树的遍历分为: 1.深度优先遍历 2.广度优先遍历 深度优先遍历: 1.前序遍历 2.中序遍历 3.广序遍历 广度优先遍历: 层序遍历 深度优先遍历 如图: 前序遍历 前序遍历的规则为:根节点、左子树、右子树 根据规则,第一个点即为根节点: 第一个为A。 A 有左子树:左子树的第一个节点又为左 ...
分类:
编程语言 时间:
2020-01-31 22:45:09
阅读次数:
95
任务:给定一个有向图,实现图的深度优先, 广度优先遍历算法,拓扑有序序列,并输出相关结果。 功能要求:输入图的基本信息,并建立图存储结构(有相应提示),输出遍历序列,然后进行拓扑排序,并测试该图是否为有向无环图,并输出拓扑序列。 按照惯例,先上代码,注释超详细: #include<stdio.h> ...
分类:
编程语言 时间:
2020-01-30 23:05:46
阅读次数:
146
之前刷leetcode的时候,知道求排列组合都需要深度优先搜索(DFS), 那么前序、中序、后序遍历是什么鬼,一直傻傻的分不清楚。直到后来才知道,原来它们只是DFS的三种不同策略。N = Node(节点)L = Left(左节点)R = Right(右节点)在深度优先搜索的时候,以Node的访问顺序... ...
分类:
其他好文 时间:
2020-01-29 12:53:37
阅读次数:
108
1 #include <iostream> 2 #include <cstdio> 3 #include <queue> 4 #include <cstring> 5 using namespace std; 6 7 int w, h, n, s[3], t[3]; 8 char dataset[2 ...
分类:
其他好文 时间:
2020-01-28 22:57:58
阅读次数:
64
链接: "LeetCode652" 给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。 两棵树重复是指它们具有相同的结构以及相同的结点值。 相关标签: 深度优先搜索 深度优先搜索加哈希表。由于在寻找重复子树过程中,我们需要记住每一步的结果,并且最终记录是 ...
分类:
其他好文 时间:
2020-01-28 22:55:04
阅读次数:
54
深度优先搜索是一种枚举所有完整路径以遍历所有情况的搜索方法。(不撞南墙不回头) DFS一般用递归来实现,其伪代码思路过程一般如下: void DFS(必要的参数){ if (符和遍历到一条完整路径的尾部){ 更新某个全局变量的值 } if (跳出循环的临界条件){ return; } 对所有可能出现 ...
分类:
其他好文 时间:
2020-01-27 19:07:35
阅读次数:
99
广度优先搜索(Breadth First Search, BFS) BFS算法实现的一般思路为: // BFS void BFS(int s){ queue<int> q; // 定义一个队列 q.push(s); // 队首元素入队 while (!q.empty()){ // 取出队首元素top ...
分类:
其他好文 时间:
2020-01-27 18:50:43
阅读次数:
68