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

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,其他会默认初始化为0dp[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.mzph.cn/diannao/58161.shtml

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

相关文章

本地Docker部署开源WAF雷池并实现异地远程登录管理界面

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

[四轴飞行器] 航模常见术语

航模常见术语 1.X模式和模式 从结构形式上四轴飞行器可分为十字模式和X模式。十字模式如下图左所示&#xff0c;X模式如下图右所示。对于姿态测量和控制来说&#xff0c;两种结构差别不大。如果考虑安装航拍摄 像机&#xff0c;为了视线不被挡住&#xff0c;通常采用X模式。 …

mysql原理、部署mysql主从+读写分离、监控mysql主从脚本

mysql&#xff1a;工作原理 从库生成两个线程&#xff0c;一个I/O线程&#xff0c;一个SQL线程&#xff1b; i/o线程去请求主库 的binlog&#xff0c;并将得到的binlog日志写到relay log&#xff08;中继日志&#xff09; 文件中&#xff1b; 主库会生成一个 log dump 线程&…

2024最新保姆级Python下载安装教程

今天给大家带来Python下载安装教程&#xff01; &#x1f449;大礼包&#x1f381;&#xff1a;python安装包/pycharm教程免费分享&#xff08;安全链接&#xff0c;放心点击&#xff09;&#x1f448; 一、下载装 Python 1、进入Python官网首页&#xff0c;下载最新的Pytho…

outlook创建新账户时报错2603、2604的解决办法

全新的戴尔笔记本电脑&#xff0c;自带的Win11家庭版&#xff0c;安装ms office 2021也顺利完成。 但是奇怪的是&#xff0c;只有其中一台笔记本电脑&#xff0c;OUTLOOK无法添加新账户。 但是这个账号在WEB端登录正常&#xff0c;由于是新入职的员工&#xff0c;根据以往经验&…

transformer的新手疑问

Transformer模型的原理主要基于自注意力机制&#xff08;Self-Attention&#xff09;和编码器-解码器结构。它的设计不依赖传统的循环神经网络&#xff08;RNN&#xff09;或卷积神经网络&#xff08;CNN&#xff09;&#xff0c;而是通过并行的方式处理序列数据&#xff0c;极…

雷池社区版OPEN API使用教程

OPEN API使用教程 新版本接口支持API Token鉴权 接口文档官方没有提供&#xff0c;有需要可以自行爬取&#xff0c;爬了几个&#xff0c;其实也很方便 使用条件 需要使用默认的 admin 用户登录才可见此功能版本需要 > 6.6.0 使用方法 1.在系统管理创建API TOKEN 2.发…

REST APIs与微服务:关键差异

在构建基于微服务的应用程序时RESYful API和微服务这两个术语经常相伴出现。然而&#xff0c;它们指的是截然不同的东西。 了解 RESTful API 和微服务之间差异的最简单方式是这样&#xff1a; 微服务&#xff1a;它们是构成更大规模基于微服务的应用程序的单个服务和功能&…

《金融数据安全分级指南JR/T 0197-2020》解读与想法

#1024程序员节&#xff5c;征文# 一、文件框架与核心思考 1、定级目标再审视 自《金融数据安全 数据安全分级指南JR/T 0197-2020》&#xff08;以下简称“指南”&#xff09;发布以来&#xff0c;金融数据安全领域已历经四年的发展与变革。该指南作为金融标准中首个以“金融数…

Docker 基础入门

Docker 基础入门 前言 在云计算和微服务架构日益盛行的今天&#xff0c;软件开发与部署的效率和灵活性成为了企业竞争力的关键因素之一。Docker&#xff0c;作为一种开源的容器化平台&#xff0c;凭借其轻量级、可移植性和易于管理的特性&#xff0c;迅速成为现代软件开发和运…

[云] 大数据分析栈(Big Data Analytics Stack)+ Apache Hadoop分布式文件系统(HDFS)+Apache Spark

任务概述 本次作业旨在帮助你理解大数据分析栈&#xff08;Big Data Analytics Stack&#xff09;的工作原理&#xff0c;并通过实际操作加深认识。你将搭建Apache Hadoop分布式文件系统&#xff08;HDFS&#xff09;作为底层文件系统&#xff0c;并将Apache Spark作为执行引擎…

Linux第二讲:Linux权限理解

Linux第二讲&#xff1a;Linux权限理解 1.shell命令以及运行原理2.Linux权限2.1什么是权限2.2认识人 -- 用户、普通用户、root用户&#xff0c;以及用户之间的切换2.3文件属性2.4文件权限知识点补充2.4.1知识点一2.4.2知识点二2.4.3知识点三2.4.4知识点四 3.角色的修改4.关于权…

Puppeteer 与浏览器版本兼容性:自动化测试的最佳实践

Puppeteer 支持的浏览器版本映射&#xff1a;从 v20.0.0 到 v23.6.0 自 Puppeteer v20.0.0 起&#xff0c;这个强大的自动化库开始支持与 Chrome 浏览器的无头模式和有头模式共享相同代码路径&#xff0c;为自动化测试带来了更多便利。从 v23.0.0 开始&#xff0c;Puppeteer 进…

可私有化部署的集装箱箱号自动识别技术,提供API 接口

启智集装箱箱号自动识别技术特点&#xff1a; 集装箱箱号自动识别技术为通过手机、相机等拍摄集装箱号码后进行视频处理或图像的去燥、纠偏、二值化等分析后进行字符的识别&#xff0c;箱号识别具有以下特点&#xff1a; 1&#xff09;快速&#xff1a;自动实时识别&#xff0c…

行为设计模式 -责任链模式- JAVA

责任链设计模式 一 .简介二. 案例2.1 抽象处理者(Handler)角色2.2 具体处理者(ConcreteHandler)角色2.3 测试 三. 结论3.1 优缺点3.2 示例3.3 要点 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神…

智能优化算法-狐狸优化算法(FOX)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1.内容介绍 狐狸优化算法 (Fox Optimization Algorithm, FOX) 是一种基于群体智能的元启发式优化算法&#xff0c;它模拟了狐狸的捕食行为、社会互动和环境适应能力&#xff0c;用于解决复杂的优化问题。 FOX的工作机制主要…

MR20一体式远程IO模块:引领工业自动化的创新之选

在快速发展的工业自动化领域&#xff0c;高效、可靠且易于维护的IO模块成为了众多企业的首选。其中&#xff0c;MR20系列一体式远程IO模块凭借其卓越的性能和人性化的设计&#xff0c;在众多IO模块中脱颖而出&#xff0c;成为工业自动化领域的璀璨明星。 小巧体积&#xff0c;高…

【CSS3】css开篇基础(4)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…

[免费]SpringBoot+Vue智慧校园(校园管理)系统[论文+源码+SQL脚本]

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue智慧校园(校园管理)系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue智慧校园(校园管理)系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 随着信息技术的迅猛发展&#xff0c…

3DS MAX三维建模平面基础与修改工具(图形编辑与二维建模修改工具)

又是一年1024祝大家程序员节日快乐 3DS MAX三维建模平面基础与修改工具&#xff08;图形编辑与二维建模修改工具&#xff09; 欢迎大家来学习3DS MAX教程&#xff0c;在这里先说一下研究好3ds Max一定要一边看教程一边要自己学的操作才能更快的进步&#xff0c;预祝大家学习顺利…