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

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…

云服务器中删除非空目录(包含文件和子目录)rm -rf <directory_name>

在云服务器中删除目录可以使用 rm 命令。如果您需要删除一个非空目录&#xff08;包含文件和子目录&#xff09;&#xff0c;可以使用以下命令&#xff1a; rm -rf <directory_name>参数解释&#xff1a; -r&#xff1a;递归删除&#xff0c;即删除目录及其所有内容&am…

【ChatGPT】在多轮对话中引导 ChatGPT 保持一致性

在多轮对话中引导 ChatGPT 保持一致性 多轮对话是与 ChatGPT 等对话模型互动时的一大特点&#xff0c;特别是在复杂任务和长时间对话中&#xff0c;保持对话的一致性显得尤为重要。用户往往希望 ChatGPT 能够在上下文中理解先前的对话内容&#xff0c;避免反复重申问题或者给出…

Chromium HTML5 新的 Input 类型color 对应c++

一、Input 类型: color color 类型用在input字段主要用于选取颜色&#xff0c;如下所示&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body&…

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.关于权…

Solidity智能合约中的异常处理error、require、assert

在Solidity中&#xff0c;异常处理是非常重要的&#xff0c;因为它帮助开发者确保智能合约的行为符合预期&#xff0c;并且能够在出现错误的情况下妥善地终止执行。Solidity提供了几种方法来处理错误情况&#xff0c;包括require、assert和自定义错误消息&#xff08;通过error…

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…

2024年“AI+教育”变革加速 智能化融合达新高度

中新网北京10月26日电(记者 夏宾)2024年&#xff0c;被业界看作“AI教育”的变革之年&#xff0c;人工智能与教育的融合达到了前所未有的高度。政策的积极引导、技术的持续突破以及社会各界的广泛关注&#xff0c;共同推动了教育领域智能化的快速发展&#xff0c;为教育革新注入…

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

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