[leetcode]1293. 网格中的最短路径
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. 网格中的最短路径相关推荐
- LeetCode 1293. 网格中的最短路径(DP/BFS)
1. 题目 给你一个 m * n 的网格,其中每个单元格不是 0(空)就是 1(障碍物). 每一步,您都可以在空白单元格中上.下.左.右移动. 如果您 最多 可以消除 k 个障碍物,请找出从左上角 ( ...
- 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 递归超时,看了评 ...
- LeetCode 1391. 检查网格中是否存在有效路径(BFS)
文章目录 1. 题目 2. 解题 2.1 BFS 2.2 爆栈的DFS 2.3 不爆栈的DFS 1. 题目 给你一个 m x n 的网格 grid.网格里的每个单元都代表一条街道.grid[i][j] ...
- LeetCode 5366. 检查网格中是否存在有效路径
5366. 检查网格中是否存在有效路径 思路:分好上下左右的情况即可,比bfs,dfs那些简单一点.从0,0开始,走到m-1,n-1就返回true,go_next(判断下一步) class Solut ...
- Leetcode.1129 颜色交替的最短路径
题目链接 Leetcode.1129 颜色交替的最短路径 Rating : 1780 题目描述 在一个有向图中,节点分别标记为 0, 1, ..., n-1.图中每条边为红色或者蓝色,且存在自环或平行 ...
- 单词搜索(二维字符网格中)
给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母顺序,通过相邻的单元格内的字母 ...
- R语言ggplot2可视化抑制可视化网格中的竖线输出、抑制可视化网格中的横线线输出、抑制背景网格输出实战
R语言ggplot2可视化抑制可视化网格中的竖线输出.抑制可视化网格中的横线线输出.抑制背景网格输出实战 目录
- LeetCode.961-2N数组中N次重复的元素(N-Repeated Element in Size 2N Array)
这是悦乐书的第365次更新,第393篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第227题(顺位题号是961).在大小为2N的数组A中,存在N+1个唯一元素,并且这些元 ...
- 网格中的BFS,逆向(POJ2049)
题目链接:http://poj.org/problem?id=2049 解题报告: 网格中的BFS,最主要的是边界问题. 1.这里在左右,上下两个方向上,分别判断墙,和门,细节是,向上有t个墙,for ...
最新文章
- shell特殊符号cut命令,sort_wc_uniq命令,tee_tr_split命令
- SQL Server-游标使用
- 没用上5G的One World演唱会,视频会议软件Zoom和思科WebEX立功了
- 【计算机网络笔记】计算机网络体系与参考模型
- 有关使用junit依赖出现@Before或者@Before注解不生效
- java在己有的类创子类怎么创_使用Java创建自己的异常子类
- angular 标准目录结构_Angular-cli新建项目目录结构详解
- Maven依赖Scope标签用法
- java 加载类java_深入研究Java类加载机制
- 完整简单的红黑树算法
- 识辨 | 什么是分类?什么是聚类?
- MySql-Mysql技术内幕~SQL编程学习笔记(N)
- Arcgis土地利用转移矩阵制作
- 威联通_AMD YES!威联通高性价比9盘位TS-963N 5GbE NAS体验
- 个人所得综合税年度汇算,个税计算公式,个税计算案例
- 接口返回数据带横杠时的正确写法
- 红外近距空空导弹弹道仿真
- 图数据库HugeGraph简介与快速入门
- 获取米家设备token
- 小程序FMP优化实录,已拿offer附真题解析
热门文章
- 2020年python工资一般多少-2020届毕业生874万,这个岗位月薪2万竟无人问津...
- python有什么用-python都可以做什么用
- 用python画八卦图-使用turtle绘制太极八卦图
- python精彩编程200例-python趣味编程100例(99个)
- 语音技术――性别辨识和语者验证
- android重写返回按钮点击事件,Android Fragment监听返回键
- mysql错误诊断_MySQL Server无法启动错误诊断一则
- LeetCode 530二叉搜索树的最小绝对差
- 兰州网络教育计算机基础考试,2017年兰州事业单位公共基础备考:计算机基础知识...
- java表达式7|3,Chapter3 Java运算符