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

搜索 #1 DFS讲解

预计会出三章,第一章是DFS,第二章是BFS,第三章是回溯。

DFS(Depth-First Search)的中文名字叫做深度优先搜索,它是搜索的一种,最多的我们拿他来实现求联通块、地图的问题。

DFS的实现原则是“一条路走到黑,不撞南墙不回头”,也就是你按着你的路走下去,哎呀,发现前面全都是墙了,才慌忙掉头回去,那么也就是每一个地图点都遍历一遍,时间复杂度大约是O(nm)。

DFS是递归的一种,它要利用visit/vis(标记)数组来记录是否这个被访问过了,用字符串/int类型来储存输入的地图/数字串,还要定义方向数组,不然代码会非常繁琐,也很容易出错。

DFS最容易出错的就是方向数组和是否执行的判断,为此,相信学过DFS的人会觉得非常头疼导致 精神失常 你编代码的时候思路很乱。

那么,接下来小编就来几个开胃题给大家做做,DFS的精华都在里面了。


第1题 迷宫

题目描述

一天 Extense 在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由 n * n 的格点组成,每个格点只有2种状态,.#,前者表示可以通行后者表示不能通行。同时当 Extense 处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上。Extense 想要从点 A 走到点 B,问在不走出迷宫的情况下能不能办到。如果起点或者终点有一个不能通行(为 #),则看成无法办到。

输入格式

  • 第1行是测试数据的组数 k,后面跟着 k 组输入。
  • 每组测试数据的第1行是一个正整数 n (1 ≤ n ≤ 100),表示迷宫的规模是 n * n 的。
  • 接下来是一个 n * n 的矩阵,矩阵中的元素为 . 或者 #
  • 再接下来一行是4个整数 ha, la, hb, lb,描述 A 处在第 ha 行, 第 la 列,B 处在第 hb 行, 第 lb 列。注意到 ha, la, hb, lb 全部是从 0 开始计数的。

输出格式

k 行,每行输出对应一个输入。能办到则输出 “YES”,否则输出 “NO”

输入/输出例子

输入 #1

2
3
.##
..#
#..
0 0 2 2
5
.....
###.#
..#..
###..
...#.
0 0 4 0

输出 #1:

YES
NO

未完待续\color{blue}未完待续未完待续

http://www.dtcms.com/a/286524.html

相关文章:

  • HBase2.5.4单机模式与伪分布式的安装与配置(Ubuntu系统)
  • Python学习笔记4
  • ts学习2
  • 用AI生成了一个名叫Janitor AI导航网站
  • Android性能优化之UI渲染优化
  • 静态时序分析:门控时钟建立时间检查
  • 无人机悬停技术运行与难点分析
  • Linux 服务器中,Tab 键自动补全功能失效
  • 免费好用,闪电般快速的AI 3D模型生成器
  • 信息检索革命:Perplexica+cpolar打造你的专属智能搜索中枢
  • 写在 35 岁生日的时候
  • Web3+AI融合新纪元:Sollong用智能终端重塑协作计算未来
  • unity Physics.RaycastNonAlloc
  • 反序列化漏洞1-PHP序列化基础概念(0基础超详细)
  • 从 Spring Boot 2.x 到 Spring Boot 3.x:全面对比与快速上手指南
  • 高精度流体分配系统的设计与分析
  • 加速度计和气压计、激光互补滤波融合算法
  • 接口测试时如何上传文件(图片、安装包等)
  • 基于DeepSeek大模型实现Function Call功能
  • elementui-admin构建
  • 行为型设计模式:解释器模式
  • ES v.s Milvus v.s PG
  • 【unitrix】 6.8 加一运算(add_one.rs)
  • ubuntu源码安装ceres-solves
  • docker--Dockerfile
  • CherryStudio+playwright-mcp-server实现AI自动化
  • 20250718-1-Kubernetes 应用程序生命周期管理-应用部署、升级、弹性_笔记
  • C语言-一维数组,二维数组
  • 七彩喜康养平台:大数据时代,养老服务从智能走向智慧
  • 实习十三——传输层协议