[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 ...
最新文章
- 《因果科学周刊》第2期:如何解决混淆偏差?
- mySQL 教程 第16章 MySQL复制
- openwrt下让telnetl与ssh(dropbear)共存
- C++ 设计Date类
- git查看分支记录_git原理
- TFS - Team Foundation Server 的安装记录
- java 面试题三十二 mysql查询面试题
- java实现ldap服务器_Java到LDAP教程(包括如何安装LDAP服务器/客户端)
- uinty粒子系统子物体变大_Unity的粒子系统(一)基础篇
- 《算法图解》第九章 动态规划
- 狂神说Redis笔记三
- c++中的虚函数及虚函数表
- 受益于人工智能的发展,人们可以以前所未有的时空分辨率系统地观察神经活动
- 笔记本计算机回收站在哪里,电脑回收站不见了怎么办 四种方法教你快速解决问题【图文教程】...
- R语言与概率统计(三) 多元统计分析(中)
- max3490esa_MAX1661EUB-T_maxim芯片后缀tg16是什么意思
- PIE-SDK V5.2 For .NET(3)——常用相关命令接口
- 微信十年,张小龙教给我们的产品方法论!(教科书一般的经典)
- c语言装饰,C/C++知识点之装饰器模式(Decorator) C++
- nnUNet Windows安装
热门文章
- python3入门代码-Python3入门经典案例,不埋坑不踩雷.小白也可上手实操(附代码)...
- 学会python能做什么-学会python可以做什么
- python读音-原来Python应该这么念,怪不得总被嘲笑~
- 学python有前途吗-入门学习Python编程有前途吗?
- 零基础学python难吗-终于明白0基础学python难吗
- 使用Python把树莓派改造成一个语音助手
- 依图做语音了!识别精度创中文语音识别新高点
- 第D题 把手放在键盘上时,稍不注意就会往右错一位。
- java math rint_Java Math rint() 使用方法及示例
- 【java笔记】函数式接口