DP学习第四篇之不同路径II

news2024/9/24 3:19:53

DP学习第四篇之不同路径||

63. 不同路径 II - 力扣(LeetCode)
在这里插入图片描述

一.题目解析

在这里插入图片描述

二. 算法原理

  1. 状态表示

    tips: 经验+题目要求。以[i,j]位置为结尾,。。。

dp[i][j]: 走到[i, j]位置时,一共多少种路径

  1. 状态转移方程

    tips: 用之前或之后的状态,推导出dp[i]的值。根据最近的一步,来划分问题

到达[i, j]位置之前:

  • [i, j]位置是障碍物

    • 路径数=0,即:dp[i][j] = 0
  • 不是障碍物

    • 从[i - 1, j]位置向下走一步,到[i, j]
    • 从[i, j - 1]位置向右走一步,到[i, j]

    即:dp[i][j] = dp[i - 1][j] + dp[i][j - 1]

  1. 初始化

    tips: 保证填表的时候不越界。增加虚拟节点
在这里插入图片描述

  • 虚拟节点里面的值,要保证后面填表是正确的

如果以起始位置为结尾,则要保证:第一个位置dp[1][1] = 1。此时初始化时可以选择将虚拟节点中dp[0][1] = 1,其他为0即可(或者dp[1][0] = 0,其他为0),保证后续填表的正确性

  • 下标的映射关系

dp表映射到原矩阵:横纵坐标-1

  1. 填表顺序

从上往下填写每一行,每一行从左往右

  1. 返回值

题目要求:到达右下角的路径数

即:return dp[m][n]

三. 编写代码

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& ob) {
        //1.创建dp表
        //2.初始化
        //3.填表
        //4.返回值

        int m = ob.size(), n = ob[0].size();
        vector<vector<int>> dp(m + 1, vector<int>(n + 1));

        dp[0][1] = 1;

        for(int i = 1; i <= m; ++i)
            for(int j = 1; j <= n; ++j)
                if(ob[i - 1][j - 1] == 0)
                    dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
            
        return dp[m][n];
    }
};

    🦀🦀观看~~

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

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

相关文章

【业务功能篇55】Springboot+easyPOI 导入导出

Apache POI是Apache软件基金会的开源项目&#xff0c;POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 Apache POI 代码实现复杂&#xff0c;学习成本较高。 Easypoi 功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出…

Golang单元测试详解:单元测试的基本使用方法

Golang 单元测试 Golang 中的单元测试是使用标准库 testing 来实现的&#xff0c;编写一个单元测试是很容易的&#xff1a; 创建测试文件&#xff1a;在 Go 项目的源代码目录下创建一个新的文件(和被测代码文件在同一个包)&#xff0c;以 _test.go 为后缀名。例如&#xff0c…

性能优化 - 前端性能监控和性能指标计算方式

性能优化 - 前端性能监控和性能指标计算方式 前言一. 性能指标介绍1.1 单一指标介绍1.2 指标计算① Redirect(重定向耗时)② AppCache(应用程序缓存的DNS解析)③ DNS(DNS解析耗时)④ TCP(TCP连接耗时)⑤ TTFB(请求响应耗时)⑥ Trans(内容传输耗时)⑦ DOM(DOM解析耗时) 1.3 FP(f…

项目接入星火认知大模型!!!

项目接入星火认知大模型demo 导言 随着国内的语言大模型不断兴起&#xff0c;科大讯飞的星火大模型&#xff0c;阿里的通义千问&#xff0c;百度的文心一言等。 这些大模型给我提供了很好的便利 同时星火大模型提供了 开放api功能 使得我们能够将大模型接入到我们自己的项目当…

又一“邪恶版”ChatGPT出现,专为网络犯罪而生

最近&#xff0c;Hackread 分享了一个恶意聊天机器人 WormGPT 的详细信息&#xff0c;该聊天机器人是为帮助网络犯罪分子进行非法活动而创建的。现在&#xff0c;暗网上又出现了一个名为 FraudGPT 的聊天机器人。这是一个基于订阅的人工智能聊天机器人&#xff0c;可以为网络犯…

【AI可视化---04】点亮数据之旅:发现Matplotlib的奇幻绘图世界!用Python挥洒数据音符的创意乐章——这四篇就够了!

晴川历历汉阳树,芳草萋萋鹦鹉洲。 日暮乡关何处是,烟波江上使人愁。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌟[2] 2022年度博客之星人工智能领域TOP4🌟 🏅[3] 阿里云社区特邀专家博主🏅 🏆[4] CSDN-人工…

2023Java 岗面试,进互联网大厂必备 Java 面试八股文真题解析

前言 一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。 很多时候&#xff0c;面试官问的问题会和自己准备的“题库”中的问题不太一样&#xff0c;即使做了复盘&#xff0c;下次面试还是不知道该从何处下手。 为此鄙人软磨硬泡才把阿里 P8 专门归纳…

合并两个有序链表——力扣21

题目描述 法一 递归 class Solution { public:ListNode* mergeTwoLists(ListNode *l1, ListNode*l2){if(l1 nullptr){return l2;} else if (l2nullptr){return l1;} else if (l1->val<l2->val){l1->next mergeTwoLists(l1->next, l2);return l1;} else {l2-&g…

常用的快捷键 -VTK快捷键

按键W --------------------- 网格显示模型 按键S --------------------- 曲面显示模型 按键P --------------------- 显示模型包围框 按键F --------------------- 放大到选取点 按键R --------------------- 重置相机视图 按键A ---------------------- 切换演员模式 按…

SSM框架 基础

1.数据库 2.工程 3.pom 4.web.xml 5.spring配置文件头部 6.实体类 7.StudentMapper接口 8. StudentMapper.xml 9.StudentService 10. StudentServiceImpl 11.StudentController 实战 查询所有 StudentMapper StudentService StudentServiceImpl StudentMapper.xml Stude…

使用jmeter进行接口测试

jmeter介绍 JMeter是Apache基金会Jakarta上的一个纯java开源项目&#xff0c;起初用于基于Web的压力测试&#xff08;pressure test&#xff09;&#xff0c;后来其应用范围逐渐扩展到对文件传输FTP&#xff0c;大型数据库&#xff08;JDBC方式&#xff09;&#xff0c;脚本程…

列表的sort方法和sorted的区别

问题&#xff1a;简述一下列表list的sort方法和sorted的区别 sort是应用在list列表上的方法&#xff0c;sorted可以对所有可迭代的对象进行排序操作 list.sort()不会返回对象&#xff0c;会改变原有的list&#xff0c;即直接在原来的list基础上修改(原列表就地排序)&#xff0…

(链表) 剑指 Offer 35. 复杂链表的复制 ——【Leetcode每日一题】

❓ 剑指 Offer 35. 复杂链表的复制 难度&#xff1a;中等 请实现 copyRandomList 函数&#xff0c;复制一个复杂链表。在复杂链表中&#xff0c;每个节点除了有一个 next 指针指向下一个节点&#xff0c;还有一个 random 指针指向链表中的任意节点或者 null。 示例 1&#x…

从容应对,探索CAD辅助命令的优秀实践

在CAD设计中&#xff0c;辅助命令是提升效率和精确度的重要工具。熟练掌握并正确运用CAD中的各种辅助命令对于设计师们来说至关重要。本文将为你介绍一些常用的CAD辅助命令&#xff0c;并详细说明它们的功能和使用方法&#xff0c;帮助你更好地利用这些命令完成高质量的设计工作…

Elasticsearch:使用 ELSER 释放语义搜索的力量:Elastic Learned Sparse EncoderR

问题陈述 在信息过载的时代&#xff0c;根据上下文含义和用户意图而不是精确的关键字匹配来查找相关搜索结果已成为一项重大挑战。 传统的搜索引擎通常无法理解用户查询的语义上下文&#xff0c;从而导致相关性较低的结果。 解决方案&#xff1a;ELSER Elastic 通过其检索模型…

虚拟机(VMware)安装Linux(Ubuntu)安装教程

清华大学开源网站镜像站网址&#xff1a;清华大学开源软件镜像站 | Tsinghua Open Source Mirror 进入之后在搜索框中搜索“ubuntu” 直接点击箭头所指的蓝色字体“ubuntu-20.04.1-desktop-amd64.iso”即可下载

Jmeter介绍以及脚本制作与调试

Jmeter介绍 Jmeter 是 Apache 基金会 Jakarta 上的一个纯 Java 开源项目&#xff0c;起初用于基于 Web 的压力测试&#xff08;pressure test&#xff09;&#xff0c;后来其应用范围逐渐扩展到对文件传输 FTP, 大型数据库&#xff08;JDBC 方式&#xff09;&#xff0c;脚本程…

7.27 作业

1.闹钟 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);tid1 startTimer(1);//显示时间计时器ui->pushButton_2->setEnabled(false);//设置停止为不可用…

陕西师范大学大学:融合传统与创新的学府之旅

前言 > &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 > &#x1f4d7;本文收录于恒川的日常汇报系列&#xff0c;大家有兴趣的可以看一看 > &#x1f4d…

MUR2080CT/MUR2080CTR-ASEMI快恢复二极管对管

编辑&#xff1a;ll MUR2080CT/MUR2080CTR-ASEMI快恢复二极管对管 型号&#xff1a;MUR2080CT/MUR2080CTR 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220 恢复时间&#xff1a;50ns 正向电流&#xff1a;20A 反向耐压&#xff1a;800V 芯片大小&#xff1a;102MIL*2 …