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

1. 不同路径 ||

题目链接:

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

 


2.  算法原理 

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

    

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

   

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

2. 状态转移方程

  

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

    

到达dp[i][j]有两种情况:1. dp[i][j]的位置有障碍物,0

    

                                        2. dp[i][j]的位置没有障碍物,那么又分为两种情况:

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

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

   

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

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

   

我们可以在上面的一行和左边的一列再额外的加上一行和一列的虚拟节点,虚拟位置为1是因为上面的值加上左边的值就可以得到原来第一个位置的值,再按照上面的值加上左边的值来计算其他位置的值

   

本题的下标映射关系:因为本题给了一个矩阵,而我们又额外的加上一行和一列的虚拟节点,所以我们的下标都统一往右下角移动了一位,如果想找回之前对应的位置,那么下标需要进行统一减1(横纵坐标

   

但是如果我们vector里面不写初始化里面本来就是0,也就是说可以不用管里面有障碍物的情况

4. 填表顺序 

    

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

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

    

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

 


3.代码

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

                                        2. 在填表之前初始化

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

                                        4. 确定返回值 

public:int uniquePathsWithObstacles(vector<vector<int>>& ob) {//定义横纵坐标int m=ob.size(),n=ob[0].size();//创建dp表二维数组//我们vector里面不写初始化里面本来就是0vector<vector<int>>dp(m+1,vector<int>(n+1));//只用初始化[1][0]为1,其他会默认初始化为0dp[1][0]=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.mzph.cn/pingmian/58201.shtml

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

相关文章

Telephony IMS

1、IMS结构 IMS的启动过程,IMS业务依附于phone进程启动,当phone进程启动时拉起对应的框架代码。 当phone进程启动时,会启动ImsReslover类,该类用于寻找对应的IMS apk实现,并进行绑定。 当绑定成功后,ImsServiceController会保存IMS APK中的如下对象IImsRegistration IIms…

Consul微服务配置中心部署(在线安装)

博主介绍&#xff1a; 计算机科班人&#xff0c;全栈工程师&#xff0c;掌握C、C#、Java、Python、Android等主流编程语言&#xff0c;同时也熟练掌握mysql、oracle、sqlserver等主流数据库&#xff0c;具有丰富的项目经验和开发技能。提供相关的学习资料、程序开发、技术解答、…

Spring Task—定时任务

Spring Task 是 Spring 提供的一种轻量级定时任务调度功能&#xff0c;内置在 Spring 框架中。与 Quartz 等重量级调度框架相比&#xff0c;Spring Task 使用简便&#xff0c;无需额外依赖&#xff0c;适合在简单的调度任务场景中使用。通过注解配置方式&#xff0c;开发者可以…

分布式数据库技术金融应用规范技术架构

目录 引 言 概述 技术框架 技术框架概述 物理资源层 计算模块 功能特性 功能架构概述 基本功能 部署灵活性 并发处理能力 扩缩容 扩容 缩容 引 言 随着金融领域分布式架构的转型升级&#xff0c;分布式数据库技术在金融领域应用逐步深入。为规范分布 式数据库技…

从0开始electron+vue2搭建环境

使用环境&#xff1a;node版本16.16.0 目录 搭建vue项目安装electron打包electron 搭建vue项目 已有vue2的环境直接进项安装electron步骤 没有的请先移动到这里查看 vue2脚手架搭建项目流程 我就不另外记录了 安装electron 直接运行 vue add electron-builder安装完成后&…

【脚本】B站视频AB复读

控制台输入如下代码&#xff0c;回车 const video document.getElementsByTagName("video")[0];//获取bpx-player-control-bottom-center容器,更改其布局方式const div document.getElementsByClassName("bpx-player-control-bottom-center")[0];div.sty…

源码复现detectron2时遇到的错误

说明&#xff1a;安装detectron2直接进到官网 detectron2源码 中找安装文档&#xff0c;安装安装文档一般没什么问题&#xff0c;但是我确实出现了问题&#xff0c;包括有&#xff1a; gcc版本太低&#xff1a;提示说需要gcc 9及以上的版本才可以pytorch版本不匹配&#xff1a…

【机器学习基础】激活函数

激活函数 1. Sigmoid函数2. Tanh&#xff08;双曲正切&#xff09;函数3. ReLU函数4. Leaky ReLU函数 1. Sigmoid函数 观察导数图像在我们深度学习里面&#xff0c;导数是为了求参数W和B&#xff0c;W和B是在我们模型model确定之后&#xff0c;找出一组最优的W和B&#xff0c;使…

ipad-make-sense:首个支持 iPad 的开源数据标注工具

在机器学习和人工智能快速发展的今天&#xff0c;高质量的数据标注工具变得越来越重要。然而&#xff0c;大多数现有的数据标注工具都局限于传统的桌面环境&#xff0c;无法适应现代移动办公的需求。今天&#xff0c;我要向大家介绍一个突破性的解决方案 —— ipad-make-sense&…

阳振坤:云时代数据库的思考 | OceanBase发布会实录

在2024 OceanBase 年度发布会中&#xff0c;OceanBase 的创始人与首席科学家阳振坤进行了《云时代数据库的思考》的主题分享。本文为演讲实录。 亲爱的朋友们&#xff0c;衷心感谢各位莅临今天的发布会现场。今天是一个云的时代&#xff0c;我想与大家分享&#xff0c;我对于云…

51单片机完全学习——DS18B20温度传感器

一、DS18B20数据手册解读 首先我们知道DS18B20使用的是单总线传输&#xff0c;默认情况下读出来的温度是12位的&#xff0c;我们这里只讨论外部电源供电这种情况。 有这张图片我们知道&#xff0c;12位温度的最小分辨率是10^-4次方&#xff0c;因此就是0.0625.我们只需要将最后…

STM32应用详解(12)使用I2C的main函数例程

文章目录 前言一、支持I2C总线的常见器件二、程序详解1.main函数2.读取传感器温度值的函数3.相关宏定义 前言 学习I2C总线。本文件主要分析main函数和LM75A驱动程序。了解器件驱动基本原理。 一、支持I2C总线的常见器件 (1)支持I2C总线的器件有很多&#xff0c;在开发板上支持…

redis详细教程(3.ZSet,Bitmap,HyperLogLog)

ZSet Redis 的 ZSet&#xff08;有序集合&#xff09;是一种特殊的数据类型&#xff0c;它允许存储一系列不重复的字符串元素&#xff0c;并为每个元素关联一个分数&#xff08;score&#xff09;。这个分数用于对集合中的元素进行排序。ZSet 的特点是&#xff1a; 唯一性&am…

Openlayers高级交互(11/20):显示带箭头的线段轨迹,箭头居中

本示例介绍如何在vue+openlayers项目中设置带有箭头的线段,箭头位于线段的中间位置。这里用到 forEachSegment 函数, 这个函数接受一个特征和一个回调函数作为参数。它遍历特征中的每个子线段,并调用回调函数传入子线段的中点坐标。 效果图 专栏名称内容介绍Openlayers基础…

Springboot整合spring-boot-starter-data-elasticsearch

前言 <font style"color:rgb(36, 41, 47);">spring-boot-starter-data-elasticsearch</font> 是 Spring Boot 提供的一个起始依赖&#xff0c;旨在简化与 Elasticsearch 交互的开发过程。它集成了 Spring Data Elasticsearch&#xff0c;提供了一套完整…

51c自动驾驶~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/11491137 #BEVWorld BEV潜在空间构建多模态世界模型&#xff0c;全面理解自动驾驶~一、引言 世界模型建模了有关环境的知识&#xff0c;其可以通过给定的条件对未来进行合理的想象。未来想象要求世界模型具有物理规律的理解…

秦时明月2搭建笔记

1.具体配置 数据库不修改&#xff0c;如果修改了&#xff0c;gm那边也要 2.数据库 3.上传配置文件出现问题 参考&#xff1a;对于测试时&#xff0c;错误信息 Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large-CSDN博客 4.启动tomcat&#x…

“冷”在日语里有这些表达-柯桥商务日语培训成人零基础学习

“冷”在日语里有这些表达: 寒い 这是最常用的表达,与中文的“冷”意思相同。 例句: 部屋が寒いから、エアコンをつけます。(房间冷,我去开空调。) 冷たい 形容物体表面温度较低,有“冷的”的意思。 例句: この水は冷たいですね。(这水挺冷的。) にぶい 指饮料不够冰镇…

安全芯片 OPTIGA TRUST M 使用介绍与示例(基于STM32裸机)

文章目录 目的资料索引硬件电路软件框架介绍数据存储框架移植框架使用 使用示例示例地址与硬件连接通讯测试功能测试 总结 目的 OPTIGA TRUST M 是英飞凌推出的安全芯片&#xff0c;芯片通提供了很多 slot &#xff0c;用于存放各类安全证书、密钥、用户数据等&#xff0c;内置…

Python: Print Table on console

# encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看&#xff1a; # 描述&#xff1a; # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 3.11 # OS : windows 10 # Datetime : 2024/10/28 22:08 # User : geo…