当前位置: 首页 > article >正文

【进阶算法】DFS(7~10)

前言相信很多人学完基础算法(双指针。滑动窗口前缀和递归等等)学习搜索与图论于是我决定出一个教程大纲是这样的主要有回溯,DFS,BFS,图,最短路径这几块难理解望多支持点赞。Day1回溯总结 错题复盘Day2组合问题固定长度、剪枝、去重Day3排列问题used数组、顺序、去重Day4字符串切割类 DFS分割回文串Day5条件判断型 DFS复原IP地址Day6多集合回溯电话号码字母组合Day7棋盘 DFS 模型一维表示二维Day8N皇后基础棋盘回溯Day9解数独二维DFSDay10DFS 全题型模板大总结Day11BFS 思想 队列 层序遍历Day12网格 BFS岛屿、连通块Day13BFS 最短路径Day14图是什么 邻接表存图核心Day15图的 DFS 遍历Day16图的 BFS 遍历Day17Floyd–Warshall弗洛伊德全源最短路Day18Dijkstra迪杰斯特拉单源最短路Day19Bellman–Ford SPFA单源最短路处理负权Day20图论最短路算法总结 全套模板默写(DFS) Day7 棋盘 DFS 模型1. 单词搜索型 DFS 是什么单词搜索是二维网格上的路径回溯问题属于棋盘 DFS 的核心分支核心特征操作场景是 m×n 字符网格如字母矩阵核心目标从任意格子出发沿上下左右相邻格子不能重复走拼出目标单词核心逻辑选起点→尝试四个方向→匹配字符→标记已走→递归下一格→不匹配则回溯。简单理解像在字母迷宫里找单词从一个字母出发上下左右找下一个字母走过的格子不能回头直到拼出完整单词。2. 解决的核心问题适用于二维网格找路径 / 拼序列的场景单词搜索今天核心例题网格中找最长连续字符迷宫找通路字符版网格中找所有能拼出目标单词的起点。核心痛点既要匹配字符又要避免重复走格子还要处理多方向递归。3.例题(Leetcode 79)#includevector#includestringusingnamespacestd;classSolution{public:vectorvectorcharmaps;inta[4][2]{{-1,0},{0,1},{0,-1},{1,0}};vectorvectorboolused;string words;boolexist(vectorvectorcharboard,string word){if(board.empty()||board[0].empty()||word.empty())returnfalse;used.resize(board.size(),vectorbool(board[0].size(),false));mapsboard;wordsword;for(inti0;iboard.size();i){for(intj0;jboard[0].size();j){if(board[i][j]word[0]){// 找到初始used[i][j]true;if(dfs(1,i,j)){returntrue;}used[i][j]false;// 回溯}}}returnfalse;}booldfs(intdepth,intm,intn){if(depthwords.size())returntrue;for(intx0;x4;x){ints1ma[x][0];ints2na[x][1];if(s10s20s1maps.size()s2maps[0].size()!used[s1][s2]maps[s1][s2]words[depth]){// 判断合法used[s1][s2]true;if(dfs(depth1,s1,s2)){returntrue;}used[s1][s2]false;}}returnfalse;}};(DFS) Day8 N皇后问题1. 例题(Leetcode 52)#includevector#includestringusingnamespacestd;classSolution{public:intcount0;intn;inttotalNQueens(int_n){n_n;vectorstringboard(n,string(n,.));dfs(0,board);returncount;}voiddfs(introw,vectorstringboard){if(rown){count;return;}for(intcol0;coln;col){if(isValid(board,row,col)){board[row][col]Q;dfs(row1,board);board[row][col].;// 回溯}}}boolisValid(vectorstringboard,introw,intcol){for(inti0;irow;i){if(board[i][col]Q)returnfalse;}for(intirow-1,jcol-1;i0j0;i--,j--){if(board[i][j]Q)returnfalse;}for(intirow-1,jcol1;i0jn;i--,j){if(board[i][j]Q)returnfalse;}returntrue;}};(DFS) Day9 数独问题1. 例题(LeetCode 37)classSolution{public:voidsolveSudoku(vectorvectorcharboard){dfs(board);}booldfs(vectorvectorcharboard){// 遍历每个格子for(inti0;i9;i){for(intj0;j9;j){if(board[i][j]!.)continue;// 尝试填 1~9for(charc1;c9;c){if(ok(board,i,j,c)){board[i][j]c;if(dfs(board))returntrue;board[i][j].;}}returnfalse;}}returntrue;}// 判断在 (x,y) 填 c 是否合法boolok(vectorvectorcharboard,intx,inty,charc){for(inti0;i9;i){if(board[x][i]c)returnfalse;// 行if(board[i][y]c)returnfalse;// 列}// 3×3宫格intax/3*3;intby/3*3;for(inti0;i3;i){for(intj0;j3;j){if(board[ai][bj]c)returnfalse;}}returntrue;}};(DFS) Day10 DFS总复习1. 组合 / 子集工具startIndex不回头、不排序2. 排列工具used 数组全遍历、讲究顺序3. 字符串切割工具start、substr切割 合法性判断4. 多集合回溯工具depth按集合顺序选5. 棋盘 DFSN 皇后逐行 三方向检查数独空格 三约束检查网格四方向扩散题型核心变量遍历方式去重 / 剪枝回溯操作组合问题startIndexi start; i n排序 i start nums[i]nums[i-1]push_back / pop_back排列问题used 数组i 0; i n排序 !used[i-1] nums[i]nums[i-1]used[i] true/false字符串切割起点 starti start; i s.size()回文判断 / 长度限制push_back / pop_back复原 IP段数 depth最多 3 位0255、无前导 0字符串拼接 / 截断电话号码组合位数 depth对应数字的字母集无字符追加 /pop_back棋盘一维 DFSindex0 ~ n*n-1放 / 不放二选一标记 / 取消标记N 皇后行 row列 col 循环列、两斜线检查放Q/ 恢复.解数独坐标 (i,j)逐格找.行 / 列 / 3×3 宫不重复填数字 / 恢复.恭喜大家DFS学习完毕下一期想要练习的扣1学习BFS扣2点点赞谢谢了

相关文章:

【进阶算法】DFS(7~10)

前言 相信很多人学完基础算法(双指针。滑动窗口,前缀和,递归等等)学习搜索与图论 于是我决定出一个教程,大纲是这样的,主要有回溯,DFS,BFS,图,最短路径这几块难理解,望多支持,点赞。 Day1:回溯总…...

零门槛掌握RPG-JS实战指南:用TypeScript开发浏览器RPG游戏

零门槛掌握RPG-JS实战指南:用TypeScript开发浏览器RPG游戏 【免费下载链接】RPG-JS Framework to create an RPG or MMORPG (with the same code) in the browser with Typescript 项目地址: https://gitcode.com/gh_mirrors/rp/RPG-JS RPG-JS是一个基于Type…...

小白也能用的Qwen3.5-9B:开箱即用,解锁AI图文视频新玩法

小白也能用的Qwen3.5-9B:开箱即用,解锁AI图文视频新玩法 1. 为什么选择Qwen3.5-9B? Qwen3.5-9B是一款强大的多模态AI模型,专为处理文本、图像和视频内容而设计。相比传统AI模型,它有三个突出优势: 多模态…...

Windows 环境下快速部署 MinIO 服务:从基础配置到安全访问

1. Windows 下部署 MinIO 的完整指南 MinIO 是一个高性能的对象存储服务,兼容 Amazon S3 API。它轻量、易部署,特别适合在本地开发环境中使用。对于 Windows 用户来说,MinIO 提供了一个简单的.exe文件,可以快速启动服务。下面我会…...

CST仿真下的石墨烯电磁诱导透明研究:从建模到实现的分析报告

CST仿真eit电磁诱导透明(包括石墨烯的建模) EIT石墨烯电磁诱导透明案例搞EIT仿真的都知道,传统金属结构虽然经典,但石墨烯的可调性才是现在的香饽饽——靠栅压就能调费米能级,相当于给器件装了个电控遥控器,在传感器、慢光器件里简…...

零基础5分钟上手YOLOv13:官版镜像开箱即用,快速检测第一张图片

零基础5分钟上手YOLOv13:官版镜像开箱即用,快速检测第一张图片 1. 为什么选择YOLOv13官版镜像? 1.1 传统部署的痛点 在计算机视觉领域,目标检测一直是个热门方向。但很多初学者往往在第一步——环境配置上就卡住了。传统部署YO…...

面试50场才懂:20道高频题决定成败;面试是双向选择,不是你求着公司给你工作,你要做的是展示自己的价值,和公司互相匹配,不用卑微,大方就好

面了50场终于悟了:99%的面试,翻来覆去就考这20道题! 目录 面了50场终于悟了:99%的面试,翻来覆去就考这20道题! 一、开场破冰&自我认知类(第一印象定基调) 1. 请做一下自我介绍 6. 说说你的优点? 15. 你领导同事对你的评价如何? 19. 说说你的缺点? 二、求职动机…...

AI辅助开发实战:如何用Decagon智能客服提升开发效率与用户体验

在开发智能客服系统的过程中,我和团队曾遇到过不少头疼的问题。最典型的就是,随着业务增长,对话场景越来越复杂,维护一个庞大的“如果-那么”规则库简直是一场噩梦。响应速度也常常因为逻辑判断层级过深而变慢,用户体验…...

2026年最火AI Agent实战:用Python+LangGraph构建“超级研究员”

在2026年,单纯调用大模型API已成过去式。真正的趋势是多智能体协作(Multi-Agent)。本文将带你使用目前生产环境最稳定、最强大的框架 LangGraph,从零构建一个能自主搜索、分析并撰写深度报告的“超级研究员”Agent系统。文末附完整…...

掌握CC Switch模型测试功能:确保AI服务稳定性的完整指南

掌握CC Switch模型测试功能:确保AI服务稳定性的完整指南 【免费下载链接】cc-switch A cross-platform desktop All-in-One assistant tool for Claude Code, Codex & Gemini CLI. 项目地址: https://gitcode.com/GitHub_Trending/cc/cc-switch 你是否曾…...

ZigZag编码实战:如何用C语言实现高效数据压缩(附完整代码)

ZigZag编码实战:如何用C语言实现高效数据压缩(附完整代码) 在数据存储和网络传输领域,压缩算法扮演着至关重要的角色。今天我们要探讨的ZigZag编码,是一种简单却极其高效的有符号整数压缩方案。不同于传统的压缩算法需…...

技术面试辅助新范式:AI驱动的面试智能助手全面解析

技术面试辅助新范式:AI驱动的面试智能助手全面解析 【免费下载链接】interview-coder-withoupaywall-opensource interview-coder-withoupaywall-opensource 项目地址: https://gitcode.com/gh_mirrors/in/interview-coder-withoupaywall-opensource 在当今竞…...

gconv reflect.Value.Convert: value of type float64 cannot be converted to type decimal.Decimal

这是 GoFrame 框架的 gconv 模块 的问题,不是 mapstruct。错误信息 reflect.Value.Convert: value of type float64 cannot be converted to type decimal.Decimal 表明 gconv 无法自动将 float64 转换为 decimal.Decimal 类型。让我搜索相关解决方案:搜…...

Python爬虫+SDPose-Wholebody:网络图片姿态分析

Python爬虫SDPose-Wholebody:网络图片姿态分析 1. 引言 你有没有遇到过这样的情况:需要分析大量网络图片中的人物姿态,但手动标注不仅耗时耗力,还容易出错?无论是健身应用中的动作矫正,还是舞蹈教学中的姿…...

如何实现一套.net系统集成多个飞书应用

第一次接触飞书多应用开发的那个下午,会议室的白板上画满了混乱的线条。左边是HR系统,右边是项目管理,中间夹着财务审批,每个系统都要求独立的飞书应用。技术团队讨论着"OAuth2.0"、"Webhook签名验证"和"…...

SpringBoot3 + SpringDoc + Knife4j:打造一个带中文界面和API分组的超实用接口文档(保姆级YAML配置)

SpringBoot3 SpringDoc Knife4j:企业级API文档中心实战指南 在微服务架构盛行的今天,一套清晰、易用的API文档系统已成为团队协作的刚需。本文将带您从零构建一个支持中文界面、智能分组、在线调试的企业级文档中心,基于SpringBoot3最新技术…...

告别混乱代码:用Pyreverse和Pycallgraph轻松分析Python项目结构(避坑指南)

深度解析Python项目结构:Pyreverse与Pycallgraph实战手册 接手一个庞大的Python项目时,面对错综复杂的代码结构往往让人望而生畏。那些层层嵌套的类继承关系、跨模块的函数调用链,以及隐藏在深处的依赖循环,都可能成为项目维护的…...

FireRedASR-AED-L模型助力Java面试培训:模拟面试语音分析与评价

FireRedASR-AED-L模型助力Java面试培训:模拟面试语音分析与评价 最近和几个做技术培训的朋友聊天,大家普遍有个头疼的问题:Java面试培训,尤其是模拟面试环节,太耗费人力了。一个讲师要听几十上百个学员的录音&#xf…...

基于cosyvoice 2.0的百度网盘文件传输效率优化实战

最近在做一个需要频繁和百度网盘打交道的数据同步项目,最头疼的就是大文件上传下载的速度问题。传统的单线程传输,遇到几百兆甚至几个G的文件,那等待时间简直让人抓狂。经过一番调研和折腾,我们最终基于 cosyvoice 2.0 协议实现了…...

终极指南:使用SMUDebugTool优化AMD Ryzen系统性能与稳定性

终极指南:使用SMUDebugTool优化AMD Ryzen系统性能与稳定性 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:…...

开源工具图像转换:用数字画生成器打造DIY创作

开源工具图像转换:用数字画生成器打造DIY创作 【免费下载链接】paintbynumbersgenerator Paint by numbers generator 项目地址: https://gitcode.com/gh_mirrors/pa/paintbynumbersgenerator 数字艺术创作正成为越来越多人的兴趣,而开源工具&quo…...

Pixel Dimension Fissioner 数据库集成:MySQL存储用户生成内容与模型参数

Pixel Dimension Fissioner 数据库集成:MySQL存储用户生成内容与模型参数 1. 场景需求与技术选型 在构建基于Pixel Dimension Fissioner的UGC平台时,我们需要处理三类核心数据:用户信息、生成任务记录和模型参数配置。MySQL因其成熟稳定、社…...

5步构建企业级视频分享平台后端框架搭建指南

5步构建企业级视频分享平台后端框架搭建指南 【免费下载链接】teriteri-backend 一个基于 springboot mybatis-plus 搭建的视频网站平台后端 项目地址: https://gitcode.com/gh_mirrors/te/teriteri-backend Teriteri后端框架是基于SpringBoot视频后端技术栈构建的开源…...

创作平权:Motion LoRA如何让独立创作者实现电影级运镜自由

创作平权:Motion LoRA如何让独立创作者实现电影级运镜自由 【免费下载链接】Motion-Lora-Camera-Push-In-Wan-14B-720p-I2V 项目地址: https://ai.gitcode.com/hf_mirrors/lovis93/Motion-Lora-Camera-Push-In-Wan-14B-720p-I2V 在数字内容创作领域&#xf…...

如何高效获取Instagram公开信息:Toutatis工具完整指南

如何高效获取Instagram公开信息:Toutatis工具完整指南 【免费下载链接】toutatis Toutatis is a tool that allows you to extract information from instagrams accounts such as e-mails, phone numbers and more 项目地址: https://gitcode.com/GitHub_Trendin…...

如何用Mermaid图表工具提升你的文档可视化效果

如何用Mermaid图表工具提升你的文档可视化效果 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器,支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程图的开发者。 项…...

Windows下用VS2010编译nginx-http-flv-module踩坑实录(附完整环境配置清单)

Windows平台编译nginx-http-flv-module全流程指南与疑难解析 在流媒体服务开发领域,nginx-http-flv-module因其高效的HTTP-FLV协议支持而备受青睐。然而,Windows平台下的编译过程却常常让开发者陷入各种环境配置的泥潭。本文将基于实际项目经验&#xff…...

别再手动复制了!用Aspose.Words for Java自动实现Word表格跨页重复表头表尾(附完整源码)

Aspose.Words for Java实战:智能分页表格的工程化实现方案 在企业级文档处理场景中,动态生成多页Word表格是Java开发者常遇到的高频需求。无论是财务系统中的数据报表、ERP中的库存清单,还是OA系统中的审批流程,都需要确保跨页表格…...

分析 paperlessngx 的典型项目结构(基于其官方仓库)。这是一个基于 Docker 的文档管理系统,主要依赖 Python (Django)、PostgreSQL、Redis 和 Tesse

好的,收到您的项目代号 paperlessngx。我将以资深技术文档工程师/DevOps专家的身份,为您生成一份详细的部署指南。 首先,我将按照预设的工作流,分析项目、推断环境要求,并最终整合成完整的部署文档。第一步&#xff1a…...

用matla做的本科毕设:从仿真到部署的实战全流程解析

作为一名即将毕业的本科生,我深知用 MATLAB 完成毕业设计时那种“跑通即胜利”的心态。然而,当导师或答辩老师问及“你的代码如何集成到实际系统?”或“这个算法如何部署?”时,往往就卡壳了。我的毕设课题是一个基于卡…...