LeetCode 980. 不同路径 III(DFS+回溯)

1. 题目

在二维网格 grid 上,有 4 种类型的方格:

  • 1 表示起始方格。且只有一个起始方格。
  • 2 表示结束方格,且只有一个结束方格。
  • 0 表示我们可以走过的空方格。
  • -1 表示我们无法跨越的障碍。

返回在四个方向(上、下、左、右)上行走时,从起始方格到结束方格的不同路径的数目,每一个无障碍方格都要通过一次。

提示:1 <= grid.length * grid[0].length <= 20

在这里插入图片描述
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/unique-paths-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. DFS回溯

  • 网格地图之类的DFS套路解题,不难
class Solution {int sx,sy,ex,ey;//起点终点坐标int m,n,steps = 0;vector<vector<int>> dir = {{-1,0},{1,0},{0,1},{0,-1}};
public:int uniquePathsIII(vector<vector<int>>& grid) {int i, j;m = grid.size(), n = grid[0].size();for(i = 0; i < m; ++i)for(j = 0; j < n; ++j){if(grid[i][j] != -1)steps++;//计算需要走的格子数if(grid[i][j] == 1)sx = i, sy = j;//起点else if(grid[i][j] == 2)ex = i, ey = j;//终点}int paths = 0;grid[sx][sy] = -1;//起点标记走过了dfs(grid, sx, sy, 1, paths);return paths;}void dfs(vector<vector<int>>& grid, int x, int y, int step, int &paths) {if(x == ex && y == ey)//终点{if(step == steps)//走过所有的地方paths++;//方案+1return;}int x0, y0, origin;for(int k = 0; k < 4; ++k){x0 = x+dir[k][0];y0 = y+dir[k][1];//周围四个方向坐标if(x0 >= 0 && x0 < m && y0 >= 0 && y0 < n && grid[x0][y0] != -1){	//坐标未出界,且没有访问过origin = grid[x0][y0];//位置原始信息grid[x0][y0] = -1;//访问过了dfs(grid,x0,y0,step+1,paths);//dfsgrid[x0][y0] = origin;//回溯,恢复现场}}}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源开放 | 开源网络通信行业知识图谱(新华三)

转载公众号 | 数字化领航OpenKG地址&#xff1a;http://openkg.cn/dataset/network-communication文章作者&#xff1a;新华三集团出品平台&#xff1a;数字化领航OpenKG是中国中文信息学会语言与知识计算专业委员会所倡导的开放知识图谱社区项目。旨在推动以中文为基础的知识图…

我删了这些训练数据…模型反而表现更好了!?

文 | Severus编 | Sheryc_王苏预训练语言模型的训练语料是全网数据&#xff0c;其来着不拒&#xff0c;只要喂过来的数据&#xff0c;统统吃掉&#xff0c;尽可能消化掉。而统计模型&#xff0c;除泛化能力外&#xff0c;另一个重要的能力就是记忆能力。我们知道&#xff0c;人…

会议交流 | CAAI BDSC2021大会专题七:社会计算与开放知识图谱

CAAI第六届全国大数据与社会计算学术会议&#xff08;China National Conference on Big Data & Social Computing&#xff0c;简称BDSC&#xff09;将于8月21-22日在重庆召开。早鸟注册开始了&#xff0c;截止时间为7月30日&#xff0c;注册链接&#xff1a;http://bdsc20…

高性能队列——Disruptor

背景 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列&#xff0c;研发的初衷是解决内存队列的延迟问题&#xff08;在性能测试中发现竟然与I/O操作处于同样的数量级&#xff09;。基于Disruptor开发的系统单线程能支撑每秒600万订单&#xff0c;2010年在QCon演讲后&…

哈工大SCIR出品《自然语言处理》新书,无套路送5本!

自然语言处理面临着8个难点&#xff0c;即语言的抽象性、组合性、歧义性、进化性、非规范性、主观性、知识性及难移植性。正是由于这些难点的存在&#xff0c;导致自然语言处理任务纷繁复杂。不过&#xff0c;虽然自然语言处理任务多种多样&#xff0c;却可以被归为三大类常见的…

OpenKG开源系列|开源知识图谱融合工具OpenEA (南京大学)

OpenKG地址&#xff1a;http://openkg.cn/tool/openeaGitHub地址&#xff1a;https://github.com/openkg-org/OpenEAGitee地址&#xff1a;https://gitee.com/openkg/OpenEA开放许可协议&#xff1a;GPL 3.0贡献者&#xff1a;南京大学&#xff08;胡伟、孙泽群、张清恒、王成名…

领域应用 | 美团商品知识图谱的构建及应用

转载公众号 | DataFunTalk分享嘉宾&#xff1a;曹雪智博士 美团 技术专家编辑整理&#xff1a;陈维美出品平台&#xff1a;DataFunTalk导读&#xff1a;在互联网新零售的大背景下&#xff0c;商品知识图谱作为新零售行业数字化的基石&#xff0c;提供了对于商品相关内容的立体化…

LeetCode 131. 分割回文串(回溯)

文章目录1. 题目2. 回溯1. 题目 给定一个字符串 s&#xff0c;将 s 分割成一些子串&#xff0c;使每个子串都是回文串。 返回 s 所有可能的分割方案。 示例: 输入: "aab" 输出: [["aa","b"],["a","a","b"] ]来…

Java NIO浅析

NIO&#xff08;Non-blocking I/O&#xff0c;在Java领域&#xff0c;也称为New I/O&#xff09;&#xff0c;是一种同步非阻塞的I/O模型&#xff0c;也是I/O多路复用的基础&#xff0c;已经被越来越多地应用到大型应用服务器&#xff0c;成为解决高并发与大量连接、I/O处理问题…

抓住训练集中真正有用的样本,提升模型整体性能!

文 | Severus编 | 小戏在任务中寻找到真正有用的训练样本&#xff0c;可以说一直是机器学习研究者们共同的诉求。毕竟&#xff0c;找到了真正有用的训练样本&#xff0c;排除掉训练样本中的杂质&#xff0c;无论最终是提升训练模型的效率&#xff0c;还是提升了模型最终的测试性…

领域应用 | 完备的娱乐行业知识图谱库如何建成?爱奇艺知识图谱落地实践

转载公众号 | 爱奇艺技术产品团队 2012年5月16日&#xff0c;谷歌首次正式提出了知识图谱的概念&#xff0c;希望利用结构化知识&#xff0c;来增强搜索引擎&#xff0c;提高搜索质量和用户体验。也就是说&#xff0c;从诞生之日起&#xff0c;知识图谱就和搜索引擎密不可分。随…

LeetCode 365. 水壶问题(最大公约数)

文章目录1. 题目2. 最大公约数1. 题目 有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶&#xff0c;从而可以得到恰好 z升 的水&#xff1f; 如果可以&#xff0c;最后请用以上水壶中的一或两个来盛放取得的 z升 水。 你允许&#xff1a; …

Spark Streaming + Elasticsearch构建App异常监控平台

本文已发表在《程序员》杂志2016年10月期。 如果在使用App时遇到闪退&#xff0c;你可能会选择卸载App、到应用商店怒斥开发者等方式来表达不满。但开发者也同样感到头疼&#xff0c;因为崩溃可能意味着用户流失、营收下滑。为了降低崩溃率&#xff0c;进而提升App质量&#xf…

python计算中文文本相似度神器 sentence_transformer、text2vec

python计算中文文本相似度神器 import sys from sentence_transformers.util import cos_sim from sentence_transformers import SentenceTransformer as SBert#model SBert(paraphrase-multilingual-MiniLM-L12-v2) #如果这调用模型有问题&#xff0c;需自行下载&#xff0…

如何看待NLP领域的内卷:我不配找工作?

在过去几年时间里&#xff0c;NLP领域取得了飞速的发展&#xff0c;这也推动了NLP在产业中的持续落地&#xff0c;以及行业对相关人才的需求。 但这里我们要面对的现实是&#xff0c;行业上90%以上的NLP工程师是“不合格的”。在过去几个月时间里&#xff0c;我们其实也面试过数…

LeetCode 537. 复数乘法

文章目录1. 题目2. 字符串提取数字1. 题目 给定两个表示复数的字符串。 返回表示它们乘积的字符串。注意&#xff0c;根据定义 i2 -1 。 示例 1: 输入: "11i", "11i" 输出: "02i" 解释: (1 i) * (1 i) 1 i2 2 * i 2i &#xff0c;你需…