1. 搜索算法 在树(图/状态集)中寻找特定节点 深度优先搜索算法和广度优先搜索算法都是基于“图”这种数据结构。 图上的搜索算法就是,在图中找出从一个顶点出发,到另一个顶点的路径。图上的搜索算法有深度优先、广度优先搜索算法,和A*A?、IDA*IDA? 等启发式搜索算法。 广度优先搜索和深度优先搜索 ...
分类:
编程语言 时间:
2020-07-19 23:30:25
阅读次数:
103
迷宫问题:定义一个矩阵:0 1 0 0 00 1 0 1 00 0 0 0 00 1 1 1 00 0 0 1 0它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。【输入】一个5 × 5的二维数组,表示一个迷宫。数据保证有唯 ...
分类:
其他好文 时间:
2020-07-19 15:54:32
阅读次数:
59
P1126 机器人搬重物【普及+/提高】题解 (最近给新来的同学们讲了讲广搜,正好巩固一下,所以最近广搜的题解比较多) 这道题是广搜里面细节很多的一道。 首先,我们要预处理一下输入数据。输入数据只表现了哪些点有障碍物,由于 机器人的形状是一个直径1.6米的球。 所以障碍物上下左右相邻的格子都是无法到 ...
分类:
其他好文 时间:
2020-07-17 14:05:31
阅读次数:
70
终于自己做出来一道。。。 递归思路1 参考递归求解最大深度,构造新函数,将节点当前路径和当作额外参数传入 这个题比较特殊的地方在于,必须是叶子节点所在的路径才有效,因此在return true的条件中加入了left right均为`nullptr 返回时使用||不影响某个分支上的正确结果 class ...
分类:
其他好文 时间:
2020-07-16 21:16:11
阅读次数:
50
递归(Recursion)算法思想递归算法是一种调用自身函数的算法(二叉树的许多性质在定义上就满足递归)。递归的基本性质就是函数调用,在处理问题的时候,递归往往是把一个大规模的问题不断地变小然后进行推导的过程。 举例:(汉诺塔问题)有三个塔 A、B、C,一开始的时候,在塔 A 上放着 n 个盘子,它 ...
分类:
编程语言 时间:
2020-07-14 00:42:37
阅读次数:
70
解题思路: 题目要求的二叉树的 从上至下 打印(即按层打印),又称为二叉树的 广度优先搜索(BFS)。 BFS 通常借助 队列 的先入先出特性来实现。 算法流程:特例处理: 当树的根节点为空,则直接返回空列表 [] ;初始化: 打印结果列表 res = [] ,包含根节点的队列 queue = [r ...
分类:
其他好文 时间:
2020-07-14 00:36:31
阅读次数:
69
不得不说字节还是很难进的,提前批算是去试了一个水,自己的算法功底,还远远达不到要求,对操作系统,java虚拟机,多线程,进程等知识还有很大的欠缺,深度还远远不够,所以还是努力的刷题吧,希望秋招能顺利进入字节。 以下是主要问到的问题: 进程的信号量,线程的信号量,线程的中断, B+ 树, 手撕了一道算 ...
分类:
其他好文 时间:
2020-07-12 14:19:51
阅读次数:
91
一道队列广搜题 此题使用队列实现,现将初始状态加入到空的队列当中;然后每次取出对首,找出队首所能转移到的状态,再将其压入队列;如此反复,这样就能保证一个状态在被访问的时候一定是采用的最短路径。 广度优先搜索的一般形式 这里是使用队列实现广度优先搜索的一般形式: Q.push(初始状态);//将初始状 ...
分类:
其他好文 时间:
2020-07-06 10:32:54
阅读次数:
62
python设计模式之模板模式 编写优秀代码的一个要素是避免冗余。在面向对象编程中,方法和函数是我们用来避免编写冗余代码的重要工具。 现实中,我们没法始终写出100%通用的代码。许多算法都有一些(但并非全部)通用步骤。广度优先搜索( Breadth-First Search, BFS)和深度优先搜索 ...
分类:
编程语言 时间:
2020-07-04 20:55:38
阅读次数:
58
public class Route<T> { /// <summary> /// 终点相对于起点的维度 /// </summary> public int Dimension { get; } /// <summary> /// 完整路线 /// </summary> public string ...