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

北京市住房和城乡建设部网站首页作文网址

北京市住房和城乡建设部网站首页,作文网址,加工厂做网站,接做网站需要问什么题目 给你一个 m x n 的迷宫矩阵 maze (下标从 0 开始),矩阵中有空格子(用 ‘.’ 表示)和墙(用 ‘’ 表示)。同时给你迷宫的入口 entrance ,用 entrance [entrancerow, entrancecol…

题目

给你一个 m x n 的迷宫矩阵 maze (下标从 0 开始),矩阵中有空格子(用 ‘.’ 表示)和墙(用 ‘+’ 表示)。同时给你迷宫的入口 entrance ,用 entrance = [entrancerow, entrancecol] 表示你一开始所在格子的行和列。
每一步操作,你可以往 上,下,左 或者 右 移动一个格子。你不能进入墙所在的格子,你也不能离开迷宫。你的目标是找到离 entrance 最近 的出口。出口 的含义是 maze 边界 上的 空格子。entrance 格子 不算 出口。
请你返回从 entrance 到最近出口的最短路径的 步数 ,如果不存在这样的路径,请你返回 -1 。

一、代码实现

func nearestExit(maze [][]byte, entrance []int) int {m := len(maze)if m == 0 {return -1}n := len(maze[0])if n == 0 {return -1}entranceRow, entranceCol := entrance[0], entrance[1]queue := [][]int{{entranceRow, entranceCol}}maze[entranceRow][entranceCol] = '+' // 标记为已访问directions := [][]int{{-1, 0}, {1, 0}, {0, -1}, {0, 1}}steps := 0for len(queue) > 0 {levelSize := len(queue)for i := 0; i < levelSize; i++ {cell := queue[0]queue = queue[1:]row, col := cell[0], cell[1]for _, dir := range directions {newRow := row + dir[0]newCol := col + dir[1]// 检查边界if newRow < 0 || newRow >= m || newCol < 0 || newCol >= n {continue}// 检查是否可走且未访问if maze[newRow][newCol] == '+' {continue}// 检查是否是出口if isExit(newRow, newCol, entranceRow, entranceCol, m, n) {return steps + 1}// 标记为已访问并入队maze[newRow][newCol] = '+'queue = append(queue, []int{newRow, newCol})}}steps++}return -1
}func isExit(r, c, entranceR, entranceC, m, n int) bool {// 位于边界且不是入口return (r == 0 || r == m-1 || c == 0 || c == n-1) && !(r == entranceR && c == entranceC)
}

二、算法分析

1. 核心思路
  • 广度优先搜索(BFS):从入口出发分层扩展,首次到达边界即最短路径
  • 出口判定:当节点位于迷宫边界且非入口时视为合法出口
  • 状态管理:使用二维数组记录访问状态,避免重复遍历
2. 关键步骤
  1. 队列初始化:将入口位置加入队列,步数设为0
  2. 分层遍历:每次处理一层节点,检查是否符合出口条件
  3. 方向扩展:对合法相邻节点(非墙、未访问)进行入队
  4. 终止条件:队列为空时返回-1,表示无可行路径
3. 复杂度
指标说明
时间复杂度O(mn)最坏情况遍历所有节点
空间复杂度O(mn)维护访问数组和队列的空间消耗

三、图解示例

在这里插入图片描述

四、边界条件与扩展

1. 特殊场景验证
  • 入口即出口:入口在边界但不算出口,需寻找其他边界点
  • 全封闭迷宫:所有边界点均为墙,返回-1
  • 螺旋路径:需绕行多层后到达边界出口
2. 扩展应用
  • 动态障碍物:支持实时更新墙的位置后重新计算路径
  • 多出口优化:寻找所有出口中的最近/最远距离
  • 三维迷宫:扩展为三维空间的路径搜索问题
3. 其他语言
from collections import dequedef nearestExit(maze, entrance):m, n = len(maze), len(maze[0])directions = [(-1,0), (1,0), (0,-1), (0,1)]visited = [[False]*n for _ in range(m)]q = deque()# 初始化队列和访问状态ent_r, ent_c = entranceq.append((ent_r, ent_c, 0))visited[ent_r][ent_c] = Truewhile q:r, c, steps = q.popleft()# 判断当前节点是否为出口(边界且非入口)if (r == 0 or r == m-1 or c == 0 or c == n-1) and (r, c) != (ent_r, ent_c):return steps# 遍历四个方向for dr, dc in directions:nr, nc = r+dr, c+dcif 0 <= nr < m and 0 <= nc < n and not visited[nr][nc] and maze[nr][nc] == '.':visited[nr][nc] = Trueq.append((nr, nc, steps+1))return -1

五、总结与优化

1. 方法对比
方法优势劣势适用场景
BFS保证最短路径空间消耗较大常规迷宫搜索
DFS空间效率高无法保证最短路径路径存在性验证
A*算法启发式搜索效率高需设计启发函数大型迷宫优化搜索
2. 工程优化
  • 双向BFS:从入口和出口同时搜索,减少搜索空间
  • 压缩存储:使用位运算压缩访问状态数组
  • 并行计算:对多个方向进行并行路径探索
3. 算法扩展
  • 权重迷宫:不同路径消耗不同步数,寻找最小消耗路径
  • 移动模式:支持对角线移动或限定转向次数
  • 动态规划:预处理各点到边界的最短距离

文章转载自:

http://Z2Ndu4mn.hqbnx.cn
http://F30yv590.hqbnx.cn
http://dnefLPhY.hqbnx.cn
http://i9esjaWe.hqbnx.cn
http://PcpEWksz.hqbnx.cn
http://ZqENorWD.hqbnx.cn
http://NFztFln7.hqbnx.cn
http://rBPg6Nbi.hqbnx.cn
http://RB3oF5Qy.hqbnx.cn
http://PnG1nobA.hqbnx.cn
http://r309WG3w.hqbnx.cn
http://jvHVyGzm.hqbnx.cn
http://GlRaYDpJ.hqbnx.cn
http://Cw2CJogl.hqbnx.cn
http://astpLycg.hqbnx.cn
http://Jzwg57lc.hqbnx.cn
http://0Kvb1EAO.hqbnx.cn
http://vaTQR7Bd.hqbnx.cn
http://45oz0BGF.hqbnx.cn
http://D4ZN3wY2.hqbnx.cn
http://eCRIXwkt.hqbnx.cn
http://2ich2o9I.hqbnx.cn
http://wLE8IQoQ.hqbnx.cn
http://0mr4COHz.hqbnx.cn
http://lH6jXdjm.hqbnx.cn
http://o9rFzrSi.hqbnx.cn
http://oEENuiTX.hqbnx.cn
http://Vw6GU683.hqbnx.cn
http://A7iqOkFG.hqbnx.cn
http://LLo2GE6s.hqbnx.cn
http://www.dtcms.com/wzjs/674597.html

相关文章:

  • 东莞网站建设基础型用c 做网站设计系统的项目作业
  • 制作人在那个网站能看做网站的广告
  • 过年做哪个网站能致富WordPress搜索引擎链接提交
  • 丹麦做网站公司有哪些wordpress 编程语言
  • 成都网站推广如何苏州市相城区住房和城乡建设局网站
  • 建筑品牌网站网站内链少改怎么做
  • 上线了建站价格江都建设局网站李局
  • 嘉兴网站建设公司网页页面设计工具
  • 怎么做seo网站推广百度热搜电视剧
  • 如何判断网站seo做的好坏河南省建设厅网站人事网
  • 网站建设需要用到那些语言wordpress文章保存图片
  • 男女做暧暧观看免费网站南昌百度关键词搜索
  • 休闲农庄网站七合一小程序saas平台
  • 如何建立一个小程序的网站培训的网站建设
  • 违法网站开发者怀化市优化办
  • 有空间站的国家网站设计两边为什么要留白
  • 建材网站建设公司山东专业的网站建设
  • 网站建设内容策略有哪些湖南微信网站营销
  • 中小型网站建设服务镇海建设银行网站首页
  • 深圳制作网站培训河南城市建设招标类网站
  • 想做个网站怎么做长沙关键词优化推荐
  • 穿着西裤做的网站百度怎么收录我的网站
  • 合肥龙岗医院网站建设网址缩短生成器
  • 用c做网站黄山网站设计公司
  • 做网站有好创意想法工服专业制作
  • 网站做提示框网站英文地图怎么做
  • 凯里网站设计哪家好做企业网站申请域名
  • 网站建设SEO优化哪家好学习网页设计与制作的网站
  • 重庆交通建设集团网站win 7怎么建立wordpress
  • 做网站公司排名多少钱深圳做网站服务