news 2026/4/18 7:45:59

【剑斩OFFER】算法的暴力美学——力扣 1926 题:迷宫中离入口最近的出口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【剑斩OFFER】算法的暴力美学——力扣 1926 题:迷宫中离入口最近的出口

一、题目描述

二、算法原理

思路:BFS 算法

我们看到上面这张图片,求 A 到 E 的最短路径,此时我们可以使用一个队列来实现层序遍历来实现 BFS 算法,我们先把 A 入队列,假设两点之间的距离都为 1,所以此时队列情况:

A -> B -> C

此时因为 B 下一个就是 E 了,所以:

A -> B -> C-> E,那么 D 就没有必要入队列了,因为 E 已经找到了,那么最短路径的长度就是

剥离的次数:

这道题目和这个示例的解法一样,只不过我们要创建一个和原二维数组的一样大小的数组用来标记哪些值被遍历的,不要重复遍历;

三、代码实现

class Solution { int dx[4] = {1,-1,0,0}; int dy[4] = {0,0,1,-1}; bool tmp[200][200]; typedef pair<int,int> PII; public: int nearestExit(vector<vector<char>>& maze, vector<int>& enter) { int x = enter[0], y = enter[1]; queue<PII> que;//使用层序遍历 que.push({x,y}); tmp[x][y] = true; int count = 0; while(que.size()) { int forl = que.size(); count++;//最短的剥离次数就是最短路径 while(forl--)//控制剥离的层数 { auto [a,b] = que.front(); que.pop(); for(int i = 0; i < 4; i++) { x = a + dx[i]; y = b + dy[i]; if(x >= 0 && x < maze.size() && y >= 0 && y < maze[0].size() && maze[x][y] == '.' && tmp[x][y] == false) { if(x == maze.size() - 1 || x == 0)//到达出口 { return count; } else if(y == maze[0].size() - 1 || y == 0)//到达出口 { return count; } else { tmp[x][y] = true; que.push({x,y}); } } } } } return -1; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 15:28:16

人群仿真软件:Legion_(5).Legion建模工具使用

Legion建模工具使用 1. 建模工具概述 Legion建模工具是Legion软件的核心组成部分之一&#xff0c;用于创建和编辑人群仿真模型。该工具提供了丰富的功能和工具集&#xff0c;使得用户能够高效地构建复杂的仿真环境。建模工具的主要功能包括&#xff1a;几何建模&#xff1a;创建…

作者头像 李华
网站建设 2026/4/16 14:04:24

MyBatis的一级缓存

什么是缓存&#xff1f; 把当前查询出来的数据进行记录&#xff0c;下一次查询相同数据时&#xff0c;从缓存中去取&#xff0c;就不会重新访问数据库了 MyBatis的缓存分为一级缓存和二级缓存 一级缓存默认是开启的 缓存只针对查询功能有效 CacheMapperCacheMapper.xml测试 pac…

作者头像 李华
网站建设 2026/4/17 12:40:48

OpenOCD JTAG协议开发完全指南

OpenOCD JTAG协议开发完全指南 版本: 1.0 日期: 2026年1月 适用范围: RISC-V调试、FPGA开发、嵌入式系统调试 目录 JTAG基础概念 OpenOCD架构 JTAG协议层次 JTAG状态机 IR/DR扫描操作 OpenOCD API详解 RISC-V调试规范 实际应用案例 常见问题排查 JTAG基础概念 什么是JTAG? …

作者头像 李华
网站建设 2026/4/18 0:17:25

Llama 3在哪些领域有实际应用?

1.Llama 3在哪些领域有实际应用&#xff1f;Llama 3 凭借其开源、高性能、可微调、支持长上下文和多语言等优势&#xff0c;已在多个领域展现出广泛的实际应用价值。尽管原生版本对中文支持有限&#xff0c;但通过微调&#xff08;SFT/LoRA&#xff09;或结合RAG&#xff08;检…

作者头像 李华
网站建设 2026/4/18 0:26:51

【Agent从入门到实践】12 记忆模块:Agent如何“记住信息”

文章目录前言一、先搞懂&#xff1a;记忆模块的本质——“信息的存储与调用”二、短期记忆 vs 长期记忆&#xff1a;一张表分清核心区别三、记忆模块的3个关键功能&#xff08;通俗版拆解&#xff09;1. 存储&#xff1a;把有用的信息“记下来”2. 检索&#xff1a;需要时“调出…

作者头像 李华
网站建设 2026/4/18 0:25:23

基于微信小程序的电子元器件商城系统源码文档部署文档代码讲解等

课题介绍本课题旨在开发一款基于微信小程序的电子元器件商城系统&#xff0c;适配电子元器件品类多、规格杂、采购场景多元的特性&#xff0c;解决传统采购渠道分散、比价繁琐、库存查询不便等痛点。系统以微信小程序为前端载体&#xff0c;依托Node.js搭建后端服务&#xff0c…

作者头像 李华