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

搜索之DFS

一.搜索1.概念(暴力按照题目要求构造可能的答案对所有可能的答案进行枚举通过穷尽所有的可能来找最优解或者统计合法解的个数2.种类搜索分为DFS和BFS3.优化搜索有很多优化方式如减小状态空间更改搜索顺序剪枝等二.DFS1.DFS(图论深度优先搜索,是一种用于遍历或搜索树或图的算法。所谓深度优先就是说每次都尝试向更深的节点走2.搜索之DFS在搜索算法 中该DFS常常指利用递归函数方便地实现暴力枚举的算法与图论中的 DFS 算法有一定相似之处但并不完全相同。3.特点通常是构造一棵搜索树或说是状态树图来进行搜索。4.基础模板void dfs(int n) { //1.终止条件 //2.dfs(int n) //3.回溯 }三.例题1.https://www.luogu.com.cn/problem/P1706分析样例以N3为例构造一棵搜索树或说是状态树来进行搜索。同时用数组来存放搜索树中的结果。 思路 先定义两个数组一个是用来存放合法解一个是用来标记该数是否用过。 我们可以先写一个用于打印的函数print()每当深搜时找到一个符合条件的解时则输出一下输出这个解注意题目输出格式--5个场宽。 接下来就是写基于递归的深搜函数了。主要思路先判断格子是否填满了如果填满则print()一下。如果没有填满则开始循环在循环中先判断当前填的数是否用过如果没有则填入搜索下一格。需要回溯 回溯就是要消除搜索过程中的不同可能性之间对中间变量的影响,即搜索下一个答案之前保证上一个答案对下一个答案没影响恢复到之前的状态代码如下时间复杂度是On#includebits/stdc.h using namespace std; #define int long long #define endl \n int n; int ans[10];//记录每一位的答案 int flag[10];//记录该数字是否被选取 void dfs(int x) {//选取第x个数-给第x个位置填数 //1.终止条件 if (xn) {//n个位置填满了 输出一个答案 for (int i1;in;i) { coutsetw(5)ans[i]; } coutendl; return; } //2.dfs(int n) for (int i1;in;i) {//枚举所有可以填的数 if (flag[i]0) {//i没有被用过 ans[x]i;//i填到x位置 flag[i]1;//标记已用 dfs(x1);//继续填下一个位置 //3.回溯 flag[i]0;//继续考虑其他选择把i变成其他位置可用的状态---回溯----撤销本层所做的一些事 } } } void solve() { cinn; dfs(1); } signed main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); int t 1; //cin t; while (t--) { solve(); } }注意在搜索算法中DFS也常被用于在网格中搜索。搜索过程中考虑往4个或者8个方向搜索同时要注意不要越过网格的边界。2.200. 岛屿数量 - 力扣LeetCode​​​​​​思路 主循环遍历整个矩阵。当遇到一点为‘1’时说明遇到了一个岛屿岛屿数目1。但是这个‘1’只是岛屿的一部分所以要通过 DFS来搜索到整个岛屿并把这个岛屿的值全改为0防止重复计算答案。 DFS设目前在i,j点搜索ij所在的整个岛屿。从ij向上下左右四个方向进行搜索 i1,j(i-1,j) (i,j-1) (i,j1)。若这4个点为‘1’且不越界则可以走过去然后将走到的点的值改为‘0’再以走到的点为基础进行搜索代码如下时间复杂度Om*n#includebits/stdc.h using namespace std; #define int long long #define endl \n int n,m; void dfs(vectorvectorchar grid,int i,int j) {//当前位置为陆地 int ngrid.size(); int mgrid[0].size(); //把grid[i][j]变为海洋 grid[i][j]0; //向上走 if (i-10 grid[i-1][j]1)dfs(grid,i-1,j); //向下走 if (i1n grid[i1][j]1)dfs(grid,i1,j); //向左走 if (j-10 grid[i][j-1]1)dfs(grid,i,j-1); //向右走 if (j1m grid[i][j1]1)dfs(grid,i,j1); } int numIslands(vectorvectorchar grid){ int ngrid.size(); int mgrid[0].size(); int cnt0; for(int i0;in;i) { for(int j0;jm;j) { if(grid[i][j]1) { cnt; dfs(grid,i,j); } } } return cnt; } void solve() { vectorvectorchar grid(n,vectorchar(m)); for (int i 0; i n; i) { for (int j 0; j m; j) { cin grid[i][j]; } } int ansnumIslands(grid); cout ans endl; } signed main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); int t 1; //cin t; while (t--) { solve(); } }各位道友若有疑问评论区留言

相关文章:

搜索之DFS

一.搜索 1.概念(暴力):按照题目要求构造可能的答案,对所有可能的答案进行枚举,通过穷尽所有的可能来找最优解,或者统计合法解的个数 2.种类:搜索分为DFS和BFS 3.优化:搜索有很多优化方式&…...

javafx中能有异步调用业务方法吗

JavaFX 中完全可以进行异步调用业务方法,这是处理耗时操作(如网络请求、数据库查询、文件IO)的标准做法,以避免阻塞 JavaFX 应用程序线程(UI线程),保持界面响应。以下是几种常用的异步调用方式&…...

2026年护理考试TOP5押题率高机构最新排名揭晓

大家好,我是你们的老朋友,今天要和大家分享的是2026年护理考试押题率高的培训机构最新排名。对于即将参加护士资格、初级护师、主管护师考试的小伙伴们来说,选择一个靠谱的培训机构至关重要。那么,哪些机构在押题方面表现突出呢&a…...

fs-cli连接到不同的freeSwitch

fscli不仅可以连接到本机的FreeSWITCCH,也可以连接到其他机器的FreeSWITCH上(或本机另外的FreeSWITCH实例上),通过在用户主目录下编辑配置文件.fs_cli_conf(注意前面的点"."),可以定义要连接的多个机器标签:注意,如果要连接到其他机器,要确保目标机器的FreeSWITCH的E…...

书匠策AI:问卷设计领域的“匠心”与“智心”之争

在学术研究的广袤天地中,问卷设计作为数据收集的先锋,其重要性不言而喻。传统问卷设计,如同一位老匠人,凭借多年的经验和精湛的手艺,一砖一瓦地搭建起研究的基石。然而,随着科技的飞速发展,书匠…...

PTA 6-12 二叉搜索树的操作集

本题要求实现给定二叉搜索树的5种常用操作。函数接口定义:BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTree BST, ElementType X ); Position Find( BinTree BST, ElementType X ); Position FindMin( BinTree BST ); Position FindMax( Bin…...

前架构师转行AI风水师:给机房看罗盘——软件测试从业者的专业启示

在数字化转型的浪潮中,一名前IT架构师转型为“AI风水师”,专为机房(如数据中心)布局提供风水指导,这看似荒诞的跨界实则蕴含深刻的测试专业智慧。作为软件测试从业者,我们习惯于用严谨的逻辑工具预测风险、…...

摆脱浏览器书签混乱!Fenrus+cpolar解锁公网访问新玩法

Fenrus 是一款主打个性化的开源导航页工具,支持添加自定义网站链接、切换暗色 / 亮色主题、设置快捷搜索引擎,还能整合天气、壁纸轮播等小部件,依托 Docker 可快速部署在极空间、群晖 NAS 或普通服务器上,无需复杂操作就能搭建专属…...

计算机毕业设计java基于人脸识别的医疗保险系统的设计与实现 基于面部识别技术的智慧医保服务平台的设计与开发 融合生物特征识别的医疗健康保险管理系统的构建与实现

计算机毕业设计java基于人脸识别的医疗保险系统的设计与实现0a8359(配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着我国医疗保障体系的不断完善和人口老龄化进程的加快&#…...

用Selenium操控寺庙:香火钱自动分账系统

一、系统架构与测试挑战寺庙香火分账系统采用“支付-清算-分账”三层架构:前端支付层:多殿堂独立收款码(微信/支付宝/云闪付)及现金通道,需兼容老年香客的无感支付流程规则引擎层:预设阶梯分账比例&#xf…...

数据类型之——变量

形式:数据类型 变量 数据 例如:int age 18;byte ss22;short dd 33;long ff 44;float gg 55.5f;double hh 66.6;char jj z;boolean kk false;boolean llture ;...

C语言lesson6

#选择结构程序设计一、关系运算符1.1以“1”代表“真”,以“0”代表“假”(在C的逻辑运算中)例题1:表达式的结果是0或者1当a3,b2,c1时 a>b的值为“真”,表达式值为1 (a>b)c的值为“真”&a…...

生产级 Redis 避坑指南:从选型决策到全链路内网调通

⚡ 生产级 Redis 避坑指南:从选型决策到全链路内网调通 在微服务架构中,Redis 是系统的“加速器”。然而,很多开发者在云端创建 Redis 实例时,由于忽略了架构选型和安全细节,往往会导致系统在上线后出现单点故障或无法…...

炸穿 JVM 瓶颈!全网最硬核 JVM 核心参数・线上配置规范与调优 SOP

前言在JDK17成为主流生产环境的今天,90%的线上JVM问题并非代码逻辑缺陷,而是参数配置不合理、内存规划错误、垃圾回收器选型不匹配导致。JVM调优从来不是玄学,而是基于内存模型、垃圾回收机制的标准化工程实践。本文聚焦JDK17环境下JVM核心参…...

GESP2026年3月认证C++二级( 第一部分选择题(9-15))

第9题&#xff1a;continue 和 break 的迷宫正确答案&#xff1a;C&#xff08;6&#xff09;1、代码&#xff1a;int count 0; for (int i 1; i < 4; i)for (int j 1; j < 5; j){if (j 3)continue;if (i 2)break;count 1;} cout << (count);2、&#x1f31f…...

2026家长自查手册:为孩子选择DHA,您是否问对了这五个问题?

2026家长自查手册&#xff1a;为孩子选择DHA&#xff0c;您是否问对了这五个问题&#xff1f;在信息过载的今天&#xff0c;为孩子选择一款DHA或“补脑”产品&#xff0c;可能比解答一道数学压轴题更让家长困惑。品牌故事、明星代言、纯度竞赛……营销声音震耳欲聋。然而&#…...

光明区举办“3·15”国际消费者权益日系列活动 广发银行深圳分行金融知识普及守护新就业群体

2026年3月14日至15日&#xff0c;以“奔向光明 欢乐购不够”为主题的光明区“315”国际消费者权益日系列活动在星河COCO City及深圳科学技术馆举行。活动通过趣味互动与精准服务&#xff0c;将消费者权益保护与金融知识普及深度融合&#xff0c;特别关注新就业形态劳动者群体&a…...

Java高频面试题(十):Spring框架核心(IOC与AOP深度解析)

Spring、SpringBoot、SpringMVC、Mybatis、Mybatis-Plus、SpringSecurity框架 Spring FrameWork 基础核心:提供IOC容器管理Bean生命周期,通过AOP实现日志、事务等横切关注点。 整合角色:作为底层容器,支撑SpringBoot、SpringMVC、SpringSecurity等模块的运行 核心概念 IOC(…...

TypeScript+React 全栈生态实战:从架构选型到工程落地,告别开发踩坑

目录 前言 为什么说这套技术栈是全栈开发的最优解&#xff1f; 1、TypeScript&#xff1a;全栈开发的"类型安全护城河" 2、ReactNext.js&#xff1a;前端工程化的"效率利器" 3、MongoDBMongoose&#xff1a;非关系型数据库的"实战指南" 4、…...

Vulkan demo入门教程三:逻辑设备、队列与交换链

Vulkan 嵌入式开发实战&#xff1a;逻辑设备、队列与交换链 (Swapchain)系列回顾&#xff1a; [第一步] 我们创建了 VkInstance 并加载了扩展。[第二步] 我们绕过了窗口系统&#xff0c;直接通过 VK_KHR_display 枚举了物理设备、选择了 HDMI 接口并创建了直连 Surface。 本章目…...

Molili 1.0.7 版本更新:从根源降低使用成本,让OpenClaw更省钱

最近 AI 圈爆火的OpenClaw&#xff0c;被网友戏称 AI 界的“波士顿龙虾”—— 能力足够硬核&#xff0c;但门槛够高、成本够贵&#xff0c;全英文操作界面、代码级部署要求、居高不下的 token 消耗&#xff0c;让绝大多数普通用户只能围观&#xff0c;根本没法把这只“硬核龙虾…...

CoPaw for Windows 桌面版安装与应用指南(一键安装)

CoPaw for Windows 桌面版安装与应用指南 一、安装前准备 下载安装包&#xff1a;https://download.csdn.net/download/wenxing462/92736599 系统要求&#xff1a;建议 Windows 10 或 Windows 11&#xff08;64位操作系统&#xff09;。 核心密钥&#xff1a;与命令行版一样…...

Unity报错?删Library秒解决!

写在最前面:每个Unity开发者都经历过的崩溃瞬间 凌晨两点。 你,盯着屏幕。 眼睛,已经发红。 项目,明天就要交。 然后,你打开Unity。 然后,它报错了。 Error: Failed to load assembly Assembly-CSharp.dll UnityEditor.BuildPlayerWindow+BuildMethodException As…...

面试经验--机器人岗位

3-16&#xff1a;上海xxx公司1.常用的控制算法和实现原理2.cmake命令find.packet3.机械臂正逆运动学原理4.dh参数模型相关内容5.二分查找6.单片机实现pwm波形输出7.流媒体服务器功能&#xff0c;如何解决延迟&#xff0c;如何实现图片传输8.客户端获取流媒体的过程9.除了moveit…...

‌移动端性能测试:Android Studio Profiler 深度优化实践

一、性能测试核心维度与Profiler工具链1.1 四大关键性能指标模块监控指标测试场景CPU线程活动/核心利用率列表滑动卡顿、复杂计算延迟内存Java堆占用/对象分配追踪内存泄漏、频繁GC导致的卡顿网络请求频率/数据传输量接口重复调用、无效流量消耗能耗唤醒锁/Wakeup事件后台异常耗…...

罗彻斯特大学与微软联手揭示多轮对话攻击新威胁

这项由罗彻斯特大学与微软研究院合作完成的研究发表于2026年的国际学习表征会议&#xff08;ICLR 2026&#xff09;&#xff0c;论文编号为arXiv:2602.06854v1。有兴趣深入了解的读者可以通过该编号查询完整论文。想象你正在和一个智能助手对话&#xff0c;就像和Siri或ChatGPT…...

OpenClaw安装tavily-search(skill)

tavily-search直接把 Tavily Search API 集成进 OpenClaw&#xff0c;让你的 AI 助手能享受到专为 Agent/RAG 优化的搜索结果&#xff1a;更干净的结构化输出、AI 生成的摘要、页面提取、网站爬取&#xff0c;甚至深度研究报告。相比 Brave&#xff0c;它在减少幻觉、提升回答…...

PPR给水管系列,品质如何把控

在PPR给水管的生产过程中&#xff0c;品质控制是确保产品安全和性能的核心。这个过程从原材料筛选开始&#xff0c;确保使用无害和符合标准的材料。接着&#xff0c;应用先进生产工艺来提升管道的强度和耐用性&#xff0c;使产品在各类环境下都能表现出色。每根管道都要经过严格…...

2026 年淮安软件开发行业白皮书:本地化小程序定制的新标准

2026 年淮安软件开发行业白皮书&#xff1a;本地化小程序定制的新标准 Meta Description: 深度解析 2026 年淮安小程序开发市场趋势&#xff0c;揭秘本地化定制的核心标准与成本结构。从需求分析到上线交付全流程指南&#xff0c;帮助企业在数字化转型中做出明智决策。 关键词:…...

百考通:AI赋能文献综述,让学术梳理高效又专业

在学术研究的道路上&#xff0c;文献综述是承前启后的关键环节&#xff0c;它既是对领域内已有研究的系统梳理&#xff0c;也是确立自身研究创新点的核心基础。然而&#xff0c;海量文献的筛选、观点的整合、逻辑的搭建&#xff0c;往往让科研工作者与学生耗费大量时间与精力。…...