栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【宽度优先搜索】LeetCode1091二进制矩阵中的最短路径

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【宽度优先搜索】LeetCode1091二进制矩阵中的最短路径

宽度优先搜索求迷宫最短路模板:

 

 

给你一个 n x n 的二进制矩阵 grid 中,返回矩阵中最短 畅通路径 的长度。如果不存在这样的路径,返回 -1 。

二进制矩阵中的 畅通路径 是一条从 左上角 单元格(即(0, 0))到 右下角 单元格(即(n - 1, n - 1))的路径,该路径同时满足下述要求:

路径途经的所有单元格都的值都是 0 。
路径中所有相邻的单元格应当在 8 个方向之一 上连通(即,相邻两单元之间彼此不同且共享一条边或者一个角)。
畅通路径的长度 是该路径途经的单元格总数。

 每次有8种选择,套用bfs模板

#define x first
#define y second
typedef pair PII;
class Solution {
public:
    int shortestPathBinaryMatrix(vector>& g) {
       if(g[0][0])return -1;
       int n=g.size();
       vector>dist(n,vector(n,-1));
       dist[0][0]=1;
       queueq;
       q.push({0,0});
       int dx[]={-1,-1,-1,0,1,1,1,0};
       int dy[]={-1,0,1,1,1,0,-1,-1};
       while(q.size()){
           auto t=q.front();
           q.pop();
           for(int i=0;i<8;i++){
               int x=t.x+dx[i],y=t.y+dy[i];
               if(x>=0&&x=0&&y 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/960731.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号