搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
码创造者
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
信息系统项目管理师023:云计算(2信息技术发展—2(1),2024年最新记得把每一次面试当做经验积累
2
有没有治疗幽门螺旋杆菌的特效药?_治疗幽门螺杆菌的特效药
3
深圳开鸿数字产业发展有限公司-软件开发工程师(C/C++)-
4
11旋转编码器原理图_plc编程入门:浅谈编码器的工作原理!
5
EEG代码实践:数据集特征提取方法一览(以SEED为例)_seed数据集
6
【Python+ArcGIS】数据分析实战——静安教育资源数据获取、处理及空间可视化分析_八爪鱼导出的数据arcgis里能用吗
7
【爬虫】1.4 POST 方法向网站发送数据_网页爬虫 post数据
8
rust教程 第一章 —— 初识rust_rust语言
9
115.工业相机海康SDK开发指南(阅读)_海康工业相机sdk
10
Centos7系统下搭建Hadoop 3.3.6_虚拟机centos7系统hadoop3.3.6安装详细步骤
当前位置:
article
> 正文
递归、搜索与回溯算法:FloodFill 算法_搜索floodfill
作者:码创造者 | 2024-07-19 08:01:10
赞
踩
搜索floodfill
例题一
算法思路:
可以利⽤「深搜」或者「宽搜」,遍历到与该点相连的所有「像素相同的点」,然后将其修改成指定的像素即可。
全局变量:
int dx[4] = { 0,0,1,-1 }, dy[4] = { 1,-1,0,0 };
int m, n;
int precolor;//记录原先的颜色
递归函数设计:void dfs(vector<vector<int>>& image,int i,int j,int color)
•
参数:
a.
原始矩阵;
b.
当前所在的位置;
c.
需要修改成的颜⾊。
•
函数体:
a.
先将该位置的颜⾊改成指定颜⾊(因为我们的判断,保证每次进⼊递归的位置都是需要修改的
位置);
b.
遍历四个⽅向上的位置:
▪
如果当前位置合法,并且与初试颜⾊相同,就递归进去。
例题二
算法思路:
遍历整个矩阵,每次找到「⼀块陆地」的时候:
•
说明找到「⼀个岛屿」,记录到最终结果 ret
⾥⾯;
•
并且将这个陆地相连的所有陆地,也就是这块「岛屿」,全部「标记」。这样的话,我们下次遍历到这块岛屿的时候,就不会再记录了,不会影响最终结果。
•
其中「标记」的操作,可以利⽤「深搜」和「宽搜」解决,其实就是
733. 图像渲染
这道题~
这样,当我们,遍历完全部的矩阵的时候,
ret
存的就是最终结果。
全局变量:
int ret;
int m, n;
vector<vector<bool>> visited;
int dx[4] = { 0,0,1,-1 }, dy[4] = {1,-1,0,0};
解法(dfs):void dfs(vector<vector<char>>& grid,int i,int j)
算法流程:
1.
初始化 ret = 0
,记录⽬前找到的岛屿数量;
2.
双重循环遍历⼆维⽹格,每当遇到⼀块陆地,标记这是⼀个新的岛屿,然后将这块陆地相连的陆地全部变成海洋。
递归函数的设计:
1.
把当前格⼦标记为true;
2.
向上、下、左、右四格递归寻找陆地,只有在下标位置合理的情况下,才会进⼊递归:
a.
下⼀个位置的坐标合理;
b.
并且下⼀个位置是陆地
例题三
算法思路:
•
遍历整个矩阵,每当遇到⼀块⼟地的时候,就⽤「深搜」或者「宽搜」将与这块⼟地相连的「整个岛屿」的⾯积计算出来。
•
然后在搜索得到的「所有的岛屿⾯积」求⼀个「最⼤值」即可。
•
在搜索过程中,为了「防⽌搜到重复的⼟地」:
◦
可以开⼀个同等规模的「布尔数组」,标记⼀下这个位置是否已经被访问过;
◦
也可以将原始矩阵的 1
修改成
0
,但是这样操作会修改原始矩阵。
4.
解法(深搜 dfs):
算法流程:
•
主函数内:
a.
遍历整个数组,发现⼀块没有遍历到的⼟地之后,就⽤ dfs
,将与这块⼟地相连的岛屿的⾯积求出来;
b.
然后将⾯积更新到最终结果 ret
中。
•
深搜函数 dfs
中:
a.
能够进到 dfs
函数中,说明是⼀个没遍历到的位置;
b.
标记⼀下已经遍历过,设置path = 1
(当前这个位置的⾯积为
1
),记录最终的⾯积;
c.
上下左右遍历四个位置:
▪
如果找到⼀块没有遍历到的⼟地,就将与这块⼟地相连的岛屿⾯积累加到 path
上;
d.
循环结束后, path
中存的就是整块岛屿的⾯积,返回即可。
全局变量:
vector<vector<bool>> visited;
int m, n;
int path;
int dx[4] = { 0,0,1,-1 }, dy[4] = { 1,-1,0,0 };
函数:void dfs(vector<vector<int>>& grid, int i, int j)
例题四
解法:
算法思路:
正难则反。
可以先利⽤
dfs
将与边缘相连的
'0'
区域做上标记,然后重新遍历矩阵,将没有标记过的
'0'
修改成
'X'
即可。
例题五
解法:
算法思路:
正难则反。
如果直接去判断某⼀个位置是否既能到⼤西洋也能到太平洋,会重复遍历很多路径。
我们反着来,从⼤西洋沿岸开始反向
dfs
,这样就能找出那些点可以流向⼤西洋;同理,从太平洋沿岸也反向 dfs
,这样就能找出那些点可以流向太平洋。那么,被标记两次的点,就是我们要找的结果。
例题六
解法:
算法思路:
模拟类型的
dfs
题⽬。
⾸先要搞懂题⽬要求,也就是游戏规则。
从题⽬所给的点击位置开始,根据游戏规则,来⼀次
dfs
即可。
例题七
算法思路:
这是⼀道⾮常典型的「搜索」类问题。
我们可以通过「深搜」或者「宽搜」,从
[0, 0]
点出发,按照题⽬的「规则」⼀直往
[m - 1, n - 1] 位置⾛。 同时,设置⼀个全局变量。每次⾛到⼀个合法位置,就将全局变量加⼀。当我们把所有能⾛到的路都⾛完之后,全局变量⾥⾯存的就是最终答案。
4.
解法(dfs):
算法流程:
•
递归函数设计:
a.
参数:当前所在的位置 [i, j]
,⾏⾛的边界
[m, n]
,坐标数位之和的边界
k
;
b.
递归出⼝:
i.
[i, j]
的坐标不合法,也就是已经超出能⾛的范围;
ii.
[i, j]
位置已经⾛过了(因此我们需要创建⼀个全局变量 visited
,来标记当前位置是否⾛过);
iii.
[i, j]
坐标的数位之和⼤于
k
;
上述情况的任何⼀种都是递归出⼝。
c.
函数体内部:
i.
如果这个坐标是合法的,就将全局变量 ret++
;
ii.
然后标记⼀下 [i, j]
位置已经遍历过;
iii.
然后去 [i, j]
位置的上下左右四个⽅向去看看。
•
辅助函数:
a.
检测坐标 [i, j]
是否合法;
b.
计算出 i
,
j
的数位之和,然后与
k
作⽐较即可。
•
主函数:
a.
调⽤递归函数,从
[0 ,0]
点出发。
•
辅助的全局变量:
a.
⼆维数组 visited
:标记
[i, j]
位置是否已经遍历过;
b.
变量 ret
:记录⼀共到达多少个合法的位置。
c.
上下左右的四个坐标变换。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/码创造者/article/detail/850292
推荐阅读
article
FFMPEG
开发
环境搭建
windows
版_
windows
ffmpeg
开发
环境...
1 FFmpeg
开发
工具VS20132所需源码(里面有
开发
用的所有lib,头文件,dll)地址:Releases · B...
赞
踩
article
没有
需求
文档
如何设计
测试用例
...
从做测试过程中发现,一般没有
需求
说明
文档
有3种情况1、开发人员的意识不足,开发流程不规范,可能是以前做项目一直都是拿到市...
赞
踩
article
如何高效地
设计
测试用例
并
评审
_
测试用例
需
使用
业务
数据
吗...
对每一项
数据
均采用多个技术
设计
出若干个非法无效
数据
和有效
数据
,所有必填项的有效
数据
拼成一组组的完整
数据
,
数据
组的个数按最...
赞
踩
article
Yolov5
_
DOTA
_
OBB源码学习
_
dota
源码...
yolov5旋转框的版本地址:https://github.com/hukaixuan19970627/YOLOv5
_
D...
赞
踩
article
一个可以对基于
Pytorch
搭建
的
模型
的
训练
过程进行全程追踪
的
模块_
pytorch
自定义
的
训练
监控...
本文所述
的
Trace模块实现了对损失和准确率
的
全过程跟踪,并在生成损失与准确率统计图
的
同时实现损失、准确率和模型本身
的
同...
赞
踩
article
最新
任意
文件
读取
下载
漏洞
总结_
任意
文件
下载
漏洞
(1),2024年最新华为
网络安全
面试真题解析...
任意
文件
读取
/
下载
漏洞
(Arbitrary File Read/Download Vulnerability),是指攻击...
赞
踩
article
SseEmitter
连接
断开与清除...
处理
SseEmitter
连接
断开与清除的问题_sseemittersseemitter ...
赞
踩
article
微信
小
程序
开发中的
推送
消息
和通知功能_
微信
小
程序
消息
推送
...
微信
小
程序
开发中的
推送
消息
和通知功能是指在
小
程序
中实现向用户发送
消息
或通知的功能。通过
消息
订阅和模板
消息
功能,我们可以让...
赞
踩
article
HTTP
请求中的
Content
-
Type
类型详解_
content
-
type
json
...
HTTP
协议作为互联网的基石,几乎支撑了所有的网页内容和应用服务。几乎每一个开发者都需要与之打交道,其中一个关键的部分...
赞
踩
article
SQL
手工
注入
_
手工
注入
和
sqlmap
那个更...
折腾了两天终于对sql
注入
有基本的思路了,先从
手工
注入
理解原理,后续再继续学习
sqlmap
,很大一部分前辈写的挺好的我就...
赞
踩
article
讲解
assignment
mismatch
: 1
variable
but
uuid
.
NewV4
r...
当我们在使用UUID库时,调用
uuid
.
NewV4
函数可能会返回两个值,其中一个是UUID本身,另一个是可能的错误。如果...
赞
踩
article
开发
安全
之:
file
_
get
_
contents
()
漏洞
利用_
file
get
contents
漏洞
...
攻击者可以控制
file
_
get
_
contents
() 文件系统路径参数,借此访问或修改原本受保护的文件。Details...
赞
踩
article
击败GPT4-
Turbo
,最强开源代码
模型
DeepSeek
-
Coder
-V2问世_
deepseek
-...
6月17日,深度求索正式开源了
DeepSeek
-
Coder
-V2
模型
。根据相关评测榜单,这是全球首个在代码、数学能力上超...
赞
踩
article
Ubuntu
调整
swap
大小
_
ubuntu
修改
swap
分区
大小
...
说明
swap
文件名称为
swap
file,位于 / 根目录下在根目录下找不到
swap
file,说明删除成功Linux dd...
赞
踩
article
【
Linux
】
Centos7
升级
内核
的
方法:
yum
更新(
ELRepo
)...
【
Linux
】
Centos7
升级
内核
的
方法:
yum
更新(
ELRepo
)_centos7
升级
内核
centos7
升级
内核
...
赞
踩
article
uniapp
使用
Hbuilder
从
打包
到发布至
TestFlight
完整教程_
uniapp
发布到te...
uniapp
,vue开发App,
使用
HBuilder成功
打包
ios篇_
uniapp
发布到
testflight
uniap...
赞
踩
article
c
语言
时间
函数
,C
日期
和
时间
函数
...
学习C - C
日期
和
时间
函数
time.h标头声明产生
时间
和
日期
的
函数
。获取
时间
值返回
时间
值的最简单的
函数
具有以下原型: ...
赞
踩
article
PHP
与
Java
的区别分析_
java
和
php
...
本文比较了
PHP
和
Java
两种编程语言在语言特点、语法、开发成本、系统架构设计、安全性、数据库访问速度以及性能方面的异同...
赞
踩
article
鸿蒙
OS
4.2
版本
全面公测,一起来看看都有哪些
新
亮点吧_
鸿蒙
4.2
新
特性
...
综上所述,
鸿蒙
OS
4.2
版本
的全面公测,带来了一系列令人期待的
新
特性
和改进。从性能优化到用户界面设计,从多设备协同到安...
赞
踩
article
Local
Binary
Convolutional
Neural
Networks ---
卷积
深度...
前言:今天他给大家带来一篇发表在CVPR 2017上的文章。原文:LBCNN原文代码:https://github.co...
赞
踩
相关标签
windows
软件工程
规格说明书
单元测试
自动化测试
职场和发展
软件测试
程序人生
深度学习
pytorch
人工智能
python
网络安全
学习
面试
信息与通信
http
springboot
微信小程序
小程序
网络协议
网络
sql注入
ctf
安全