bfs

搜索学习笔记+杂题 (基础一 简单的dfs+bfs)

搜索杂题: 一、基础的BFS与DFS: 深搜和广搜都可以遍历出在一定限制下可能出现的所有情况,但是朴素的搜索一般复杂度极高,成指数级别,需要用到各种五花八门的优化方式,后面会一一介绍,但基础很重要,几乎不用考虑优化,直接模拟题意就可以了。这篇博文讲的是习题ing。 深搜一般处理有分支的情况,广搜一般 ......
基础 笔记 dfs bfs

lc -- 第 121 场双周赛(bfs, 数位dp, python3, go)

简单模拟 class Solution: def missingInteger(self, nums: List[int]) -> int: res = nums[0] for i in range(1, len(nums)): if nums[i] == nums[i - 1] + 1: res ......
数位 python3 python 121 bfs

深度优先搜索(DFS)和广度优先搜索(BFS)

深度优先搜索(DFS)和广度优先搜索(BFS),都是图形搜索算法,相似又却不同,在应用上也被用到不同的地方。 一、深度优先搜索(DFS) 深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法,英文缩写为DFS即Depth First Search。深度优先搜索是图论中的经典算法,利用深度优先搜索 ......
广度 深度 DFS BFS

BFS-走迷宫

1. 题目 简单概述:走迷宫问题,行走的方向是上下左右。这个迷宫内有些格子不能走,想要从迷宫的左上角走到右下角,最少移动次数。这道题属于最短路问题(求出到达一个点的最短路径)。 思路分析 为什么使用BFS求到的答案能保证是最短的路径? 因为BFS是逐层搜索的,能把当前层的所有可能值包括进来,每一层的 ......
迷宫 BFS

图(树)的广度优先遍历bfs

图的广度优先遍历 广度优先遍历,就是在遍历时优先考虑遍历的广度,不像深度优先那样一条路径遍历到底,而是一层一层的遍历。 由于广度优先是一层一层节点的遍历,在图的边权值都为1的情况下,若我们要求出节点a到节点b的最短路,就可以以a为源点(source)进行广搜,当a第一次搜到b时,其路径一定最短。因为 ......
广度 bfs

BFS模板

#class Solution: # def BFS(self, start, target): # q = [] # 用一个列表做队列 # v = [] # 记录走过的路 # q.append(start) # 把起点放入队列 # v.append(start) #加入走过的路 # step = ......
模板 BFS

2023秋季专题训练四(BFS2)

问题 D: 迷宫 注意行列的坑点即可,可以多开一维来判断方向 优先枚举转向少的,因为转向越少越可能达到 点击查看代码 int vis[110][110][5];//第三表示方向 0向上 1向右 2向下 3向左 char st[110][110];//存图,注意坑点:行列反过来 struct node ......
专题 2023 BFS2 BFS

广度优先搜索(BFS)

一、广搜介绍 广度优先搜索是一种暴力算法,通过遍历一整张图来找寻结果。一般是使用队列来实现 1.原理 首先我们将根节点加入队列,然后遍历这个节点的全部方向,如果有满足条件的节点出现,就将其加入队列。 在全部方向遍历完之后,我们将遍历的节点出队列。然后接着重复上述的操作,直到队列为空,也就代表着图遍历 ......
广度 BFS

AcWing 920. 最优乘车 (抽象建图 + bfs

package 算法提高课; import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class acw920 { /** * 本题的 ......
AcWing 920 bfs

CSP-J 2023 T4 旅游巴士(CSP-J考纲范围内的解法:BFS+二分)

原题连接:https://www.luogu.com.cn/problem/P9751 题意解读: 给定n个点,m条边的有向带权图(权重为能通过该条边的最小时间),求从起点1到终点n的最短距离,由于出发和达到时间都需为k的倍数,所以这个最短距离也必须是k的倍数。限制条件:每通过一条路径,时长比上一个 ......
解法 CSP-J CSP 范围 2023

NOJ 八数码问题(bfs加hash)

描述 在九宫格里放在1到8共8个数字还有一个是空格,与空格相邻的数字可以移动到空格的位置,问给定的状态最少需要几步能到达目标状态(用0表示空格): 1 2 3 4 5 6 7 8 0 输入 输入一个给定的状态。 输出 输出到达目标状态的最小步数。不能到达时输出-1。 输入样例 1 2 3 4 0 6 ......
数码 问题 hash NOJ bfs

01bfs

今天写一个最短路题边权为 \(0\) 或 \(1\),我说这不一眼 \(dij\) 么?结果题解区全部写的 \(O(n+m)\) 的 \(01bfs\) 。 好家伙我居然一直不知道这么个东西,花了一个小时看会了,写一下原理。 实现的方法很简单,就是一个双端队列,去 \(nm\) 的 \(deque\ ......
bfs 01

bfs入门p1443一点心得

这题思路很简单,也是bfs通常的思路。即在每一轮枚举所有可能出现的情况,将其入队,然后弹出队首。当队列为空时结束搜索。 有以下几点体会: 1.入队的条件尽量多。不然容易死循环,一开始没有加上bfs[a.x][a.y] 1这个条件,导致已经被搜索到的点重复入队陷入死循环; 2.第一次走到的点标记为1, ......
点心 p1443 1443 bfs

DFS和BFS

DFS : acwing 842 递归搜索树 1 #include<iostream> 2 using namespace std; 3 4 const int N = 10; 5 int n; 6 int path[N]; 7 bool st[N]; 8 9 void dfs(int u) 10 ......
DFS BFS

BFS

鸣人与佐助 佐助被大蛇丸诱骗走了,鸣人在多少时间内能追上他呢? 已知一张地图(以二维矩阵的形式表示)以及佐助和鸣人的位置。地图上的每个位置都可以走到,只不过有些位置上有大蛇丸的手下,需要先打败大蛇丸的手下才能到这些位置。 鸣人有一定数量的查克拉,每一个单位的查克拉可以打败一个大蛇丸的手下。假设鸣人可 ......
BFS

DFS、BFS模板

目录DFSBFS DFS 处理当前节点的位置不同对应着不同的遍历 def preorderTraversal(root): if not root: return print(root.val) #前序遍历,处理当前节点 preorderTraversal(root.left) # 递归遍历左子树 ......
模板 DFS BFS

迭代加深,双向搜索,IDA*,A*,双端队列BFS

迭代加深: //迭代加深搜索 //给搜索设定一个范围,如果在这个范围内没有答案那么再加大搜索范围 //这么做是为了防止搜索过深,导致利用大量时间搜索无用信息 //如果当前搜索是第10位,搜索的是个二叉树,那么前9个就是2^0+2^1+2^2+..+2^9=2^10-1,所以时间复杂度并没增大太多 / ......
队列 双向 IDA BFS

字符串、线性表、队列、栈、哈希表、dfs、bfs

题目列表: 1. 字符串 无重复字符的最长子串 (中等难度) 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 AC代码,展开查看 class Solution { public: int lengthOfLongestSubstring(string s) { int res ......
队列 字符串 线性 字符 dfs

数据结构与算法 | 深搜(DFS)与广搜(BFS)

在查找二叉树某个节点时,如果把二叉树所有节点理理解为解空间,待找到那个节点理解为满足特定条件的解,对此解答可以抽象描述为: _在解空间中搜索满足特定条件的解_,这其实就是搜索算法(Search)的一种描述。当然也有其他描述,比如是“指一类用于在数据集合中查找特定项或解决问题的算法”,又或者是“指通过... ......
数据结构 算法 结构 数据 DFS

算法修养--广度优先搜索BFS

广度优先算法(BFS) 广度优先算法(Breadth-First Search)是在图和树领域的搜索方法,其核心思想是从一个起始点开始,访问其所有的临近节点,然后再按照相同的方式访问这些临近节点的节点,这种访问方式类似涟漪泛起,一层一层的扩散。 广度优先算法解决的问题: 从A点出发,有没有一条路径可 ......
广度 算法 修养 BFS

0-1 bfs

问题引入 对于边权为 0/1 的图 \(G=(V,E)\),求解其最短路。(注意这里的 1 并不一定就是 1,只是反映有无权值) ps. 一下称该类图为 0-1 图。 求解 一般图一般有 Dijkstra 和 SPFA。 但对于 0-1 图这样特殊的图,\(O(m\log m)\) 的 Dijkst ......
bfs

[USACO08FEB]meteor Shower S题解(bfs)

题目描述 贝茜听说一场特别的流星雨即将到来:这些流星会撞向地球,并摧毁它们所撞击的任何东西。她为自己的安全感到焦虑,发誓要找到一个安全的地方(一个永远不会被流星摧毁的地方)。 如果将牧场放入一个直角坐标系中,贝茜现在的位置是原点,并且,贝茜不能踏上一块被流星砸过的土地。 根据预报,一共有 \(M\) ......
题解 Shower meteor USACO FEB

JAVA图搜索算法之DFS-BFS

图算法DFS与BFS BFS和DFS代表对图进行遍历,即搜索的算法,搜索算法中常用的只要有两种算法:深度优先遍历(Depth-First-Search : DFS)和广度优先遍历(Breadth-First-Search : BFS)。一个图结构可以用来表示大量现实生活中的问题,比如,道路网络,计算 ......
算法 DFS-BFS JAVA DFS BFS

DFS 与 BFS

简介 状态:解决问题所关注的属性的集合。 转移:状态之间的变化过程。 搜索:处理状态转移、寻找新状态、枚举(遍历)所有状态的一种算法思想。 搜索树:状态和有效转移形成的树形结构,每个状态只会被扩展一次。 深度优先搜索 全称为 Depth-First Search,简称 DFS、深搜。 这个算法一般采 ......
DFS BFS

dfs 与 bfs

$$dfs$$ 深度优先搜索,全称 Depth First Search,通常有两种意义:递归暴力枚举每种情况、图论中用于遍历或搜索图的算法。 搜索:递归暴力枚举每种情况 OI-wiki Link 没有什么好说的,经常用于打暴力,像 xhr 神仙就可以用它打出 HN 2023 小学组 S 1=。 洛 ......
dfs bfs

bfs (9/26)

bfs 可用于权值相同为1的时候求最短路问题 #include<iostream> #include<algorithm> #include<cstring> #include<queue> using namespace std; const int N = 110; typedef pair<i ......
bfs 26

0-1 BFS

前言:做这道题发现dij过不了,意识到自己不会0-1 BFS,遂查,发现网上的解释很多都不清楚,oi wiki 好像没讲,自己证明了一下。 算法过程: 用于求边权为 \(0\) 或 \(1\) 的图的最短路。方法就是把 dij 的单调队列换成一个 deque,每次更新如果用边权为 \(0\) 的边, ......
BFS

八皇后(bfs)旧题新做

题意 题目链接:https://www.luogu.com.cn/problem/P1219?contestId=130784 题意就是给一个 N x N 的矩阵,然后放 N 个皇后,问可以怎么放,有多少种放法。 思路 dfs。 需要三个数组,col[i] 用来存第 i 列是否放置了皇后,dg[i] ......
皇后 bfs

BFS

宽度优先搜索 感染区就相当于我们往水面扔了一颗石子,广度优先搜索就相当于荡起的一圈涟漪 而二叉树的 BFS 是只会向左右2侧泛起涟漪!!! import java.util.Scanner; import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx ......
BFS

邻接表BFS

1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #define MaxSize 20 5 6 typedef struct ArcNode{ //边表结点 7 struct ArcNode *next; 8 int adjvex; 9 }ArcNode; ......
BFS