struct Node
{int x, y;int rest;  //还可以消几个障碍物int dist;  //距离Node(int _x,int _y, int _rest, int _dist):x(_x), y(_y), rest(_rest),dist(_dist){}
};class Solution {static constexpr int dx[4] = {-1, 0, 1, 0};     //上右下左static constexpr int dy[4] = { 0, 1, 0,-1};
public:int shortestPath(vector<vector<int>>& grid, int k) {int m = grid.size();int n = grid[0].size();if(n == 1 && m == 1){return 0;}k = min(m + n -3, k);bool visited[m][n][k+1];memset(visited, false, sizeof(visited));queue<Node>q;q.push(Node(0,0,k,0));    // or q.emplace(0, 0, k, 0);visited[0][0][k] = true;while(!q.empty()){Node cur = q.front();q.pop();if(cur.x == m-1 && cur.y == n-1){return cur.dist;}for(int i = 0; i < 4; i++){int x = cur.x + dx[i];int y = cur.y + dy[i];if(x >= 0 && x < m && y >= 0 && y < n){if(grid[x][y] == 0 && !visited[x][y][cur.rest]){q.emplace(x, y, cur.rest, cur.dist+1);//or Node next(x, y, cur.rest, cur.dist+1);//q.push(next);  visited[x][y][cur.rest] = true;}else if(grid[x][y] == 1 && cur.rest > 0 && !visited[x][y][cur.rest-1]){q.emplace(x, y, cur.rest-1, cur.dist+1);visited[x][y][cur.rest-1] = true;}}}}return -1;}
};

参考了题解:
https://leetcode-cn.com/problems/shortest-path-in-a-grid-with-obstacles-elimination/solution/wang-ge-zhong-de-zui-duan-lu-jing-by-leetcode/

[leetcode]1293. 网格中的最短路径相关推荐

  1. LeetCode 1293. 网格中的最短路径(DP/BFS)

    1. 题目 给你一个 m * n 的网格,其中每个单元格不是 0(空)就是 1(障碍物). 每一步,您都可以在空白单元格中上.下.左.右移动. 如果您 最多 可以消除 k 个障碍物,请找出从左上角 ( ...

  2. leetcode 1293. Shortest Path in a Grid with Obstacles Elimination | 1293. 网格中的最短路径(BFS)

    题目 https://leetcode.com/problems/shortest-path-in-a-grid-with-obstacles-elimination/ 题解 DFS 递归超时,看了评 ...

  3. LeetCode 1391. 检查网格中是否存在有效路径(BFS)

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 爆栈的DFS 2.3 不爆栈的DFS 1. 题目 给你一个 m x n 的网格 grid.网格里的每个单元都代表一条街道.grid[i][j] ...

  4. LeetCode 5366. 检查网格中是否存在有效路径

    5366. 检查网格中是否存在有效路径 思路:分好上下左右的情况即可,比bfs,dfs那些简单一点.从0,0开始,走到m-1,n-1就返回true,go_next(判断下一步) class Solut ...

  5. Leetcode.1129 颜色交替的最短路径

    题目链接 Leetcode.1129 颜色交替的最短路径 Rating : 1780 题目描述 在一个有向图中,节点分别标记为 0, 1, ..., n-1.图中每条边为红色或者蓝色,且存在自环或平行 ...

  6. 单词搜索(二维字符网格中)

    给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母顺序,通过相邻的单元格内的字母 ...

  7. R语言ggplot2可视化抑制可视化网格中的竖线输出、抑制可视化网格中的横线线输出、抑制背景网格输出实战

    R语言ggplot2可视化抑制可视化网格中的竖线输出.抑制可视化网格中的横线线输出.抑制背景网格输出实战 目录

  8. LeetCode.961-2N数组中N次重复的元素(N-Repeated Element in Size 2N Array)

    这是悦乐书的第365次更新,第393篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第227题(顺位题号是961).在大小为2N的数组A中,存在N+1个唯一元素,并且这些元 ...

  9. 网格中的BFS,逆向(POJ2049)

    题目链接:http://poj.org/problem?id=2049 解题报告: 网格中的BFS,最主要的是边界问题. 1.这里在左右,上下两个方向上,分别判断墙,和门,细节是,向上有t个墙,for ...

最新文章

  1. shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令
  2. SQL Server-游标使用
  3. 没用上5G的One World演唱会,视频会议软件Zoom和思科WebEX立功了
  4. 【计算机网络笔记】计算机网络体系与参考模型
  5. 有关使用junit依赖出现@Before或者@Before注解不生效
  6. java在己有的类创子类怎么创_使用Java创建自己的异常子类
  7. angular 标准目录结构_Angular-cli新建项目目录结构详解
  8. Maven依赖Scope标签用法
  9. java 加载类java_深入研究Java类加载机制
  10. 完整简单的红黑树算法
  11. 识辨 | 什么是分类?什么是聚类?
  12. MySql-Mysql技术内幕~SQL编程学习笔记(N)
  13. Arcgis土地利用转移矩阵制作
  14. 威联通_AMD YES!威联通高性价比9盘位TS-963N 5GbE NAS体验
  15. 个人所得综合税年度汇算,个税计算公式,个税计算案例
  16. 接口返回数据带横杠时的正确写法
  17. 红外近距空空导弹弹道仿真
  18. 图数据库HugeGraph简介与快速入门
  19. 获取米家设备token
  20. 小程序FMP优化实录,已拿offer附真题解析

热门文章

  1. 2020年python工资一般多少-2020届毕业生874万,这个岗位月薪2万竟无人问津...
  2. python有什么用-python都可以做什么用
  3. 用python画八卦图-使用turtle绘制太极八卦图
  4. python精彩编程200例-python趣味编程100例(99个)
  5. 语音技术――性别辨识和语者验证
  6. android重写返回按钮点击事件,Android Fragment监听返回键
  7. mysql错误诊断_MySQL Server无法启动错误诊断一则
  8. LeetCode 530二叉搜索树的最小绝对差
  9. 兰州网络教育计算机基础考试,2017年兰州事业单位公共基础备考:计算机基础知识...
  10. java表达式7|3,Chapter3 Java运算符