搜索(深搜回溯与广搜) 1.深搜与回溯 深度优先搜索,简称为深搜或 "DFS" (Depth First Search), 是图运算的一种搜索方式,简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.大致的搜索过程如下 深度优先遍历图的方法是, 从图中某顶点v出发: (1 ...
分类:
其他好文 时间:
2021-04-30 12:09:37
阅读次数:
0
POJ百练 4116 拯救行动 【有序队列】 1.此题存在"慢路"(有守卫的位置)与"快路",遇到"慢路"需要消耗多倍时间/资源。故需要给类加一个是否"可直接判断"累减属性,对于"慢路",每次访问都减一,直到该属性转变为"可判断",此后与正常通路点一致; 2.关于python题解版本,参考hzw大佬 ...
分类:
编程语言 时间:
2021-03-29 11:57:13
阅读次数:
0
AcWing 845. 八数码 解题思路 这道题,放在了BFS的分类下面 第一反应是从一个状态开始广搜 不过状态的表示,存储和转移,以及最短距离dist[]数组,都没有很好的想法 最终思路 看完y总的课,看到了他用一个字符串来表示一个3x3的矩阵,还真是个好想法 状态表示就用一个字符串 用一个que ...
这道题的数据是不是有点水?还是题目描述有问题? #include<bits/stdc++.h> #define x first #define y second using namespace std; const int N=1005; typedef pair<int,int> PII; int ...
分类:
其他好文 时间:
2020-08-17 17:32:42
阅读次数:
60
题目链接:https://leetcode-cn.com/problems/same-tree/ 思路:同时深搜或广搜两棵树,比较值即可 class Solution { public boolean isSameTree(TreeNode p, TreeNode q) { //100 5 if(p ...
分类:
其他好文 时间:
2020-08-07 09:43:32
阅读次数:
51
双端队列广搜 1. 算法分析 双端队列广搜算法只适用于边权只有0和1的情况,本质上是对dijkstra堆优化版本的再次优化。由于dijkstra堆优化版本每次要把最小值从队头拿出,然后更新其他值后插入队列。而当边权只有0和1时,当处理的边权为0,那么更新完仍然为最小值,直接放入队头;为1则插入队尾。 ...
分类:
其他好文 时间:
2020-07-27 13:40:39
阅读次数:
68
P1126 机器人搬重物【普及+/提高】题解 (最近给新来的同学们讲了讲广搜,正好巩固一下,所以最近广搜的题解比较多) 这道题是广搜里面细节很多的一道。 首先,我们要预处理一下输入数据。输入数据只表现了哪些点有障碍物,由于 机器人的形状是一个直径1.6米的球。 所以障碍物上下左右相邻的格子都是无法到 ...
分类:
其他好文 时间:
2020-07-17 14:05:31
阅读次数:
70
luoguP2962 题目描述 节日宴会上,我们有 \(N\) 盏彩色灯,他们分别从 $1$ 到 \(N\) 被标上号码。有 \(M\) 条边连接着这些灯,当按下某一盏灯的开关的时候,这盏灯本身以及所有和这盏灯有边相连的灯的开关状态都会发生改变。 最开始所有灯都是被关着的,问需要至少按下多少开关,才 ...
分类:
其他好文 时间:
2020-07-09 20:51:13
阅读次数:
68
一道队列广搜题 此题使用队列实现,现将初始状态加入到空的队列当中;然后每次取出对首,找出队首所能转移到的状态,再将其压入队列;如此反复,这样就能保证一个状态在被访问的时候一定是采用的最短路径。 广度优先搜索的一般形式 这里是使用队列实现广度优先搜索的一般形式: Q.push(初始状态);//将初始状 ...
分类:
其他好文 时间:
2020-07-06 10:32:54
阅读次数:
62
看到拓扑排序感觉非常遥远的复杂,不喜欢图。看了拓扑排序的原理,很像广搜。 以本题样例为例: 了解一下 出度 和 入度 5的出度为3 入度为 0 ,3的出度为2 入度为2…… for循环 找到秃头 5 入队列, 然后给跟他有联系的所有点一一剃头,看谁再秃,秃了入队列,再对继往开来的秃子进行操作。 #i ...
分类:
编程语言 时间:
2020-06-17 10:46:50
阅读次数:
56