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. 《因果科学周刊》第2期:如何解决混淆偏差?
  2. mySQL 教程 第16章 MySQL复制
  3. openwrt下让telnetl与ssh(dropbear)共存
  4. C++ 设计Date类
  5. git查看分支记录_git原理
  6. TFS - Team Foundation Server 的安装记录
  7. java 面试题三十二 mysql查询面试题
  8. java实现ldap服务器_Java到LDAP教程(包括如何安装LDAP服务器/客户端)
  9. uinty粒子系统子物体变大_Unity的粒子系统(一)基础篇
  10. 《算法图解》第九章 动态规划
  11. 狂神说Redis笔记三
  12. c++中的虚函数及虚函数表
  13. 受益于人工智能的发展,人们可以以前所未有的时空分辨率系统地观察神经活动
  14. 笔记本计算机回收站在哪里,电脑回收站不见了怎么办 四种方法教你快速解决问题【图文教程】...
  15. R语言与概率统计(三) 多元统计分析(中)
  16. max3490esa_MAX1661EUB-T_maxim芯片后缀tg16是什么意思
  17. PIE-SDK V5.2 For .NET(3)——常用相关命令接口
  18. 微信十年,张小龙教给我们的产品方法论!(教科书一般的经典)
  19. c语言装饰,C/C++知识点之装饰器模式(Decorator) C++
  20. nnUNet Windows安装

热门文章

  1. python3入门代码-Python3入门经典案例,不埋坑不踩雷.小白也可上手实操(附代码)...
  2. 学会python能做什么-学会python可以做什么
  3. python读音-原来Python应该这么念,怪不得总被嘲笑~
  4. 学python有前途吗-入门学习Python编程有前途吗?
  5. 零基础学python难吗-终于明白0基础学python难吗
  6. 使用Python把树莓派改造成一个语音助手
  7. 依图做语音了!识别精度创中文语音识别新高点
  8. 第D题 把手放在键盘上时,稍不注意就会往右错一位。
  9. java math rint_Java Math rint() 使用方法及示例
  10. 【java笔记】函数式接口