Leetcode刷题详解——不同路径

news/2025/2/19 18:01:30/

1. 题目链接:62. 不同路径

2. 题目描述:

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

问总共有多少条不同的路径?

示例 1:

img

输入:m = 3, n = 7
输出:28

示例 2:

输入:m = 3, n = 2
输出:3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右
3. 向下 -> 向右 -> 向下

示例 3:

输入:m = 7, n = 3
输出:28

示例 4:

输入:m = 3, n = 3
输出:6

提示:

  • 1 <= m, n <= 100
  • 题目数据保证答案小于等于 2 * 109

3. 算法(动态规划):

3.1算法思路:

3.1.1 状态表示:

对于这种【路径类】的问题,我们的状态表示一步有两种形式:

  1. [i,j]位置出发

  2. 从起来位置出发,到达[i,j]位置(dp[i] [j]表示:走到[i,j]位置处,一共多少种方式)

3.1.2 状态转移方程:

如果dp[i][j]表示到达[i,j]位置的方法数,那么到达[i,j]位置之前的一小步,有两种情况:

  1. [i,j]位置的上方([i-1,j]的位置)向下走一步,转移到[i,j]位置

  2. [i,j]位置的左方([i,j-1]的位置)向右走一步,转移到[i,j]位置

由于我们要求的是有多种方法,因此状态转移方程为:d[i][j]=dp[i-1][j]+dp[i][j-1]

3.1.3 初始化:

可以在最前面加上一个【辅助结点】,帮助我们初始化。使用这种技巧要注意两个点:

请添加图片描述

  1. 辅助结点里面的值要保证后续填表是正确的

  2. 下标的映射关系

在本题中,添加一行并且添加一列后,只需将dp[0][1]的位置初始化为1即可

3.1.6 填表顺序:

填表的顺序就是从上往下填写每一行,在填写每一行的时候从左往右

3.1.5 返回值:

根据状态表示,我们要返回dp[m][n]的值

3.2 C++算法代码:

class Solution {
public:int uniquePaths(int m, int n) {//创建一个dp表vector<vector<int>> dp(m+1,vector<int>(n+1,0));//初始化dp[0][1]=1;//填表for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){dp[i][j]=dp[i-1][j]+dp[i][j-1];}}//返回结果return dp[m][n];}
};

http://www.ppmy.cn/news/1182503.html

相关文章

Python基于微博的舆情分析、热搜可视化系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 1. 简介 基于Python Django的微博热搜、微博舆论可视化系统。通过微博舆情分析系统获取到最新微博舆情分析…

性能诊断工具对比+Prometheus(普罗米修斯)监控系统学习

【精选】Prometheus&#xff08;普罗米修斯&#xff09;监控系统_普罗米修斯监控_愿许浪尽天涯的博客-CSDN博客 Java 性能诊断工具 &#x1f3cd;️... Java自带的工具 JConsoleJVisualVMjmapjstackjcmd单机图形化诊断工具 YourKitJProfilerVisualVMArthas分布式诊断工具 Zipk…

SparkSQL综合案例-省份维度的销售情况统计分析

一、项目背景 二、项目需求 &#xff08;1&#xff09;需求 ①各省销售指标&#xff0c;每个省份的销售额统计 ②TOP3销售省份中&#xff0c;有多少家店铺日均销售额1000 ③TOP3省份中&#xff0c;各个省份的平均单价 ④TOP3省份中&#xff0c;各个省份的支付类型比例 &#x…

操作系统:进程与线程(三)死锁

一战成硕 2.4 死锁2.4.1 死锁的概念2.4.2 死锁的预防2.4.3 死锁避免2.4.4 死锁的检测和接触 2.4 死锁 2.4.1 死锁的概念 死锁的定义 多个进程因竞争资源而造成的一种僵局&#xff08;互相等待&#xff09; 死锁发生条件&#xff1a;互斥、不可剥夺、请求和保持、循环等待 死…

如何使用react-router v6快速搭建路由?

前言 之前一直使用react-router V5&#xff0c;上次搭建一个小项目&#xff0c;下载的react-router V6&#xff0c; 本以为没什么区别&#xff0c;就按照v5的那一套用了&#xff0c;区区小功能&#xff0c;奈何不了我的。然后自信满满的运行&#xff0c;哦豁&#xff0c;不生效…

【python练习】在棋盘上收集奖品,跟着书本理思路

在棋盘上收集奖品 Description在棋盘上收集奖品。假设有一个m x n的棋盘&#xff0c;每个格子里有一个奖品&#xff08;每个奖品的价值在10到1000之间&#xff09;&#xff0c;现在要求从左上角开始到右下角结束&#xff0c;每次只能往右或往下走一个格子&#xff0c;所经过的格…

如何使用drawio画流程图以及导入导出

画一个基本的流程图 你可以在线使用drawio, 或者drawon创建很多不同类型的图表。 如何使用编辑器&#xff0c;让我们以一个最基本的流程图开始。 流程图&#xff0c;就是让你可视化的描述一个过程或者系统。 图形和很少部分的文字表达就可以让读者很快的理解他们需要什么。 创…

【C++的OpenCV】第十四课-OpenCV基础强化(二):访问单通道Mat中的值

&#x1f389;&#x1f389;&#x1f389; 欢迎各位来到小白 p i a o 的学习空间&#xff01; \color{red}{欢迎各位来到小白piao的学习空间&#xff01;} 欢迎各位来到小白piao的学习空间&#xff01;&#x1f389;&#x1f389;&#x1f389; &#x1f496;&#x1f496;&…