news 2026/4/16 16:06:22

【剑斩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/12 15:33:22

火山云豆包大模型在药物研发领域的潜在应用场景有哪些?

火山云豆包大模型在药物研发领域的潜在应用场景主要涵盖早期药物发现、临床前研究、临床试验优化、知识管理与文献挖掘四大方向&#xff0c;具体可细分为以下10个核心场景。需要特别说明的是&#xff1a;以下内容基于豆包大模型的技术能力特征&#xff08;多模态理解、长上下文…

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

aemarebackup.dll文件丢失找不到问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

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

学长亲荐!继续教育必备8款AI论文网站TOP8测评

学长亲荐&#xff01;继续教育必备8款AI论文网站TOP8测评 2026年继续教育AI论文工具测评&#xff1a;为何需要这份榜单&#xff1f; 在继续教育领域&#xff0c;论文写作已成为许多学员提升学历、获取职称的必经之路。然而&#xff0c;面对繁重的工作压力与有限的时间&#xff…

作者头像 李华
网站建设 2026/4/16 15:51:39

Linux环境编程第二天笔记

Linux环境编程第二天fork()fork()会使得进程本身被复制&#xff0c;父子进程几乎一模一样。被复制的实际的UID和GID&#xff0c;以及有效的UID和GID所有的环境变量进程组ID和会话ID当前的工作路径&#xff0c;除非用chdir()修改打开的文件信号响应函数整个内存空间、包括栈、堆…

作者头像 李华