动态规划 —— 路径问题-不同路径

news2024/10/28 23:18:39

1. 不同路径

题目链接:

62. 不同路径 - 力扣(LeetCode)icon-default.png?t=O83Ahttps://leetcode.cn/problems/unique-paths/description/

 

 


2.  算法原理 

1. 状态表示:以莫一个位置为结尾

    

dp[i]表示:以[i,j]位置为结尾时,解码方法的总数

   

dp[i,j]表示:走到[i,j]位置的时候一共有多少种方法

 

2. 状态转移方程

  

根据最近的一步来划分问题:

     

到达dp[i][j]有两种情况:

                                        1. 从上面过来:dp[i-1,j] -> dp[i,j],dp[i-1,j]

                                        2. 从左边过来:dp[i,j-1] -> dp[i,j],dp[i,j-1]

   

之所以这里是dp[i-1,j]而不是dp[i-1,j]+1是因为这里的+1是dp[i-1,j]到dp[i,j]的一步,而不是一种方法

   

  

本题的状态转移方程是:dp[i][j] = dp[i-1,j] + dp[i,j-1]

3. 初始化 :把dp表填满不越界,让后面的填表可以顺利进行

    

根据状态转移方程来初始化的话是需要dp[i-1,j] 和 dp[i,j-1]来确定要初始化位置值,但是我们整个矩阵的上面的一行和左边的一列是不符合这个情况的,所以我们可以在上面的一行和左边的一列再额外的加上一行和一列的虚拟节点

   

那个虚拟位置为1是因为上面的值加上左边的值就可以得到原来第一个位置的值,再按照上面的值加上左边的值来计算其他位置的值

4. 填表顺序 

    

本题的填表顺序是:从上往下填写每一行,每一行的值是从左往右

5. 返回值 :题目要求 + 状态表示 

    

本题的返回值是:dp[m][n]


3.代码

动态规划的固定四步骤:1.  创建一个dp表

                                        2. 在填表之前初始化

                                        3. 填表(填表方法:状态转移方程)

                                        4. 确定返回值 

class Solution {
public:
    int uniquePaths(int m, int n) {
        //创建dp表二维数组
        vector<vector<int>>dp(m+1,vector<int>(n+1));
        //只用初始化[0][1]为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.coloradmin.cn/o/2225769.html

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

相关文章

新手入门c++(8)

到时候了&#xff0c;是时候给你们讲一下其他的定义形式与格式化输入输出了。 1.长整型变量 长整型变量分为两种&#xff1a; ①long类型 在计算机编程中&#xff0c;long 类型是一个整型数据类型&#xff0c;用于存储较大的整数。它的大小和范围取决于操作系统和编译器的实…

存储引用服务(OSS)Minio 环境搭建

下载Docker desktop 最好进行相关的设置&#xff0c;比如说进行登陆docker账号等等 推荐使用 docker-engine源【目前还能使用下载】 https://ccr.ccs.tencentyun.com 使用docker拉取对应的minio镜像 netstat -aon|findstr "8081" 注意&#xff1a;dockerhub有时…

QT访问数据库:应用提示Driver not loaded

在QT中运行完全正确错误截图 解决办法 我用的是MySQL。我把libmysql.dll复制到应用程序的目录下&#xff0c;即可正常访问数据库。

Hugging Face 使用指南——并行智算云(10s上手版)

1. 在bash中使用 1.1 直接复制命令 echo export HF_ENDPOINT"https://hf-mirror.com" >> ~/.bashrc # 在bashrc文件中设置镜像地址 source ~/.bashrc # 使修改立即生效 echo $HF_ENDPOINT # 查看是否成功红框部分出现就是正确了 1.2 命令详解 命令行echo…

HarmonyOS开发 - 本地持久化之实现LocalStorage支持多实例

用户首选项为应用提供Key-Value键值型的数据处理能力&#xff0c;支持应用持久化轻量级数据&#xff0c;并对其修改和查询。数据存储形式为键值对&#xff0c;键的类型为字符串型&#xff0c;值的存储数据类型包括数字型、字符型、布尔型以及这3种类型的数组类型。 在上一篇中&…

CodeQL学习笔记(1)-QL语法(逻辑连接词、量词、聚合词、谓词和类)

最近在学习CodeQL&#xff0c;对于CodeQL就不介绍了&#xff0c;目前网上一搜一大把。本系列是学习CodeQL的个人学习笔记&#xff0c;根据个人知识库笔记修改整理而来的&#xff0c;分享出来共同学习。个人觉得QL的语法比较反人类&#xff0c;至少与目前主流的这些OOP语言相比&…

计算机视觉专栏(2)【LeNet】代码实战【pytorch】完整可运行

LeNet 系列 实践部分1.引言2. limu代码3. plpal代码3.1 代码调试3.2 代码详解 4. 总结 实践部分 Lenet的实现分为两种代码&#xff0c;一种是李沐老师的实现代码以及b友up霹雳啪啦的代码&#xff0c;两者都有不同的优点&#xff0c;李老师的lenet十分还原原著中的操作&#xf…

ios 项目升级极光SDK

由于项目使用的是旧版本&#xff0c;隐私合规检查不通过&#xff0c;需要升级到最新版本&#xff0c; 使用cocoapods集成无法正常运行&#xff0c;.a文件找不到&#xff0c;可能项目比较久了&#xff0c;最好选择手动导入 下载最新版本SDK&#xff0c;将 SDK 包解压&#xff…

IROS 2024最新接收的Motion Planning前沿研究成果汇总

No.1 文章标题&#xff1a;Extended Tree Search for Robot Task and Motion Planning 作者&#xff1a;REN, Tianyu; Chalvatzaki, Georgia; Peters, Jan 中文标题&#xff1a;机器人任务和运动规划的扩展树搜索 No.2 文章标题&#xff1a;Kinodynamic Motion Planning fo…

Jmeter分布式性能测试细节+常见问题解决

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Jmeter分布式测试时需要的特别注意 1&#xff09;参数化文件的位置和内容 如果使用csv文件进行参数化&#xff0c;即通过读取csv文件中的数据来为测试脚本提供…

C/C++每日一练:实现选择排序

选择排序 选择排序是一种简单直观的排序算法&#xff0c;时间复杂度为&#xff0c;其中 n 是数组长度&#xff0c;不适合大数据集的排序&#xff0c;适合于元素较少且对性能要求不高的场景。 选择排序的基本思想是&#xff1a;每次从未排序部分选择最小的元素&#xff0c;将其放…

[四轴飞行器] 遥控器操作说明

遥控器操作说明 1 A&#xff1a;无线连接信号强度&#xff1a;已连接 B&#xff1a;控制模式&#xff1a;H定高模式,T定点模式 C&#xff1a;遥控器状态&#xff1a;加锁 D&#xff1a;飞行模式&#xff1a;无头 E&#xff1a;电量显示&#xff1a;遥控器电量&#xff08;加…

OpenCV系列教程六:信用卡数字识别、人脸检测、车牌/答题卡识别、OCR

文章目录 一、信用卡数字识别1.1 模板匹配1.2 匹配多个对象1.3 处理数字模板1.4 预处理卡片信息&#xff0c;得到4组数字块。1.5 遍历数字块&#xff0c;将卡片中每个数字与模板数字进行匹配 二、人脸检测2.1人脸检测算法原理2.2 OpenCV中的人脸检测流程 三、车牌识别3.1 安装t…

Jupyter Notebook 中使用render_notebook渲染pyecharts图像不显示的一种情况

一开始我发现自己的jupyter文件在渲染pyecharts图片时一开始可以显示&#xff0c;但后来不知道怎么的就不显示了&#xff0c;查找了很多方法&#xff0c;但是没有效果&#xff0c;都是改js渲染什么的&#xff0c;还有就是参数不对的&#xff0c;对于我来说都没什么用&#xff0…

Pytorch学习--DataLoader的使用

一、DataLoader简介 DataLoader官网 重要参数&#xff1a;画红框的参数 dataset: 作用&#xff1a;表示要加载的数据集。DataLoader通过该参数从数据集中读取数据。类型&#xff1a;Dataset&#xff0c;即PyTorch定义的Dataset类&#xff0c;用于封装数据并提供数据索引的功…

C++第八讲:STL--stack和queue的使用及模拟实现

C第八讲&#xff1a;STL--stack和queue的使用及模拟实现 1.stack的使用2.queue的使用3.栈和队列OJ题3.1题目1&#xff1a;最小栈3.2题目2&#xff1a;栈的压入、弹出序列3.3题目3&#xff1a;逆波兰表达式求值3.4题目4&#xff1a;用栈实现队列 4.栈的模拟实现5.队列的模拟实现…

BFS解决最短路问题(4)_为高尔夫比赛砍树

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 BFS解决最短路问题(4)_为高尔夫比赛砍树 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48…

LeetCode-684. 冗余连接

. - 力扣&#xff08;LeetCode&#xff09; 题目 树可以看成是一个连通且 无环 的 无向 图。 给定往一棵 n 个节点 (节点值 1&#xff5e;n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间&#xff0c;且这条附加的边不属于树中已存在的边。图的信息记录于…

传输层UDP

再谈端口号 端口号&#xff1a;标识了主机上进行通信的不同的应用程序 在TCP/IP 协议中我们用“源IP”"源端口号" “目的IP”“目的端口号” “协议号”五元组来标识一个通信 用netstat -n 查看 查看网络信息&#xff0c;我们有两种命令查看网络通信1.用netsta…

Python | Leetcode Python题解之第509题斐波那契数

题目&#xff1a; 题解&#xff1a; class Solution:def fib(self, n: int) -> int:if n < 2:return nq [[1, 1], [1, 0]]res self.matrix_pow(q, n - 1)return res[0][0]def matrix_pow(self, a: List[List[int]], n: int) -> List[List[int]]:ret [[1, 0], [0, …