力扣● 62.不同路径 ● 63. 不同路径 II

● 62.不同路径

单解这道题的话,发现第一行或者第一列的这些位置,都只有一条路径走到,所以路径条数都是1。这就是初始化。坐标大于第一行第一列的这些位置,因为机器人只能向下/向右走,所以只能从上个位置向下走和从左边位置向右走,那么应该是上个位置和左边位置路径条数的总和。这就是递推公式。

五部曲:

1、DP数组及其下标的含义:dp[i][j]是起点到坐标(i,j)的路径条数。

2、DP数组如何初始化:dp[0]=1(下图忘记标出来了),第一行或者第一列的都是1

3、递推公式:dp[i][j]=dp[i-1][j]+dp[i][j-1]。(上个位置和左边位置路径条数的总和)

4、遍历顺序:第一行/第一列的初始化后不改动,之后遍历应该从坐标(1,1)开始,所以i是1到m-1,j是1到n-1。这里行优先列优先均可。

5、打印DP数组:

class Solution {
public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m,vector<int>(n,1));//dp数组:m行n列;并且初始化第一行和第一列的为1for(int i=1;i<m;++i)//修改的是(1,1)以及之后的{for(int j=1;j<n;++j){dp[i][j]=dp[i][j-1]+dp[i-1][j];}}return dp[m-1][n-1];}
};

● 63. 不同路径 II

这道题是上道题的扩展,主要区别在于有障碍,那么初始化和递推公式都有变化。

初始化:如果第一列/第一行里面有障碍物,那么第一列/第一行之后的应该初始化为0,因为过去不了,而障碍物之前的还是初始化为1。这里一开始都初始化为0,然后从开始挨个改成1,直到遇到障碍物退出。

递推公式:如果obstacleGrid相应位置没有障碍物,还是使用上一道题的公式;如果有障碍物,也应该更新为0。

代码如下:

class Solution {
public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m=obstacleGrid.size(),n=obstacleGrid[0].size();vector<vector<int>> dp(m,vector<int>(n,0));//dp数组:m行n列//第一列初始化for(int i=0;i<m;++i){if(obstacleGrid[i][0]==1)break;dp[i][0]=1;}//第一行初始化for(int j=0;j<n;++j){if(obstacleGrid[0][j]==1)break;dp[0][j]=1;}for(int i=1;i<m;++i)//修改的是(1,1)以及之后的{for(int j=1;j<n;++j){if(obstacleGrid[i][j]==1)dp[i][j]=0;else dp[i][j]=dp[i][j-1]+dp[i-1][j];cout<<dp[i][j]<<"  ";}cout<<endl;}return dp[m-1][n-1];}};

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

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

相关文章

CentOS基于volatility2的内存取证实验

CentOS&#xff0c;Redhat和Fedora 都是Red Hat体系&#xff0c;采用yum管理器&#xff0c;不同于Debian、Ubuntu作为Debian体系使用apt 本文以CentOS为例&#xff0c;采用avml制作内存镜像&#xff0c;并利用volatility官方所给工具制作profile符号文件&#xff0c;进行简单的…

对象存储minio

参考Linux搭建免费开源对象存储 wget https://dl.minio.io/server/minio/release/linux-amd64/minio yum install -y wget yum install -y wget wget https://dl.minio.io/server/minio/release/linux-amd64/minio chmod x minio sudo mv minio /usr/local/bin/ minio --vers…

第7节、双电机直线运动【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;前面章节主要介绍单个电机控制&#xff0c;本节内容介绍两个电机完成Bresenham直线运动 一、Bresenham直线算法介绍 Bresenham直线算法由Jack Elton Bresenham于1962年在IBM开发&#xff0c;最初用于计…

小白水平理解面试经典题目LeetCode 20. Valid Parentheses【栈】

20.有效括号 小白渣翻译 给定一个仅包含字符 ‘(’ 、 ‘)’ 、 ‘{’ 、 ‘}’ 、 ‘[’ 和 ‘]’ &#xff0c;判断输入字符串是否有效。 输入字符串在以下情况下有效&#xff1a; 左括号必须由相同类型的括号封闭。 左括号必须按正确的顺序关闭。 每个右括号都有一个对…

openstack(T版)公有云--Dashboard服务

公有云上OpenStack Train最小化安装_openstack最小化部署-CSDN博客 我的opensatck(T)是参考上面链接去部署完成的&#xff0c;在部署完Dashboard服务后&#xff0c;将要用浏览器访问的时候出现了404 500 Internal Server Error 等各种各样的问题&#xff0c;以下是我排查问题…

MinMaxScaler, StandardScaler数据预处理中常用的两种缩放方法,用于将数据标准化或归一化到特定的范围或分布

MinMaxScaler 和 StandardScaler 是数据预处理中常用的两种缩放方法&#xff0c;用于将数据标准化或归一化到特定的范围或分布。这两种缩放方法的主要区别在于它们的目标和实现方式。 MinMaxScaler MinMaxScaler 会将数据缩放到一个指定的范围&#xff0c;通常是 [0, 1] 或 […

Spring boot集成各种数据源操作数据库

一、最基础的数据源方式 1.导入maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency <dependency><groupId>com.mysql</groupId><art…

Git学习笔记-- amend 详解

前言 最近在项目合作过程中&#xff0c;出现了以下情景。 本地修复了个 Bug&#xff0c;经过 add、commit、push 等操作上传到了远端仓库。然后发现自己的代码有点问题&#xff0c;然后再次进行了上述操作。最后远程有两份 commit 记录。 经过同事提醒&#xff0c;简单修复之…

代码随想录算法训练营第二七天 | 回溯 组合 分割

目录 组合总和组合总和II分割回文串 LeetCode 39. 组合总和 LeetCode 40.组合总和II LeetCode 131.分割回文串 组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &am…

kubeadm部署k8s集群

kubeadm部署k8s集群 服务器环境&#xff1a;(2GB或更多RAM&#xff0c;2个CPU或更多CPU&#xff09; Kubernetes Master1节点&#xff1a;172.20.26.34 Kubernetes Master2节点&#xff1a;172.20.26.36 Kubernetes Node1节点&#xff1a; 172.20.26.37 Kubernetes Node…

嵌入式软件的设计模式与方法

思想有多远&#xff0c;我们就能走多远 4、状态与工作流类设计模式 4.1 状态与事件 行为随条件变化而改变&#xff0c;这里状态切换的模式也称为状态机。有限状态机 (Finite State Machine&#xff0c;FSM) 是由3 个主要元素组成的有向图: 状态、转换和动作。 状态是系统或者…

12. UE5 RPG使用GameplayEffect修改角色属性(三)

书接 11. UE5 RPG使用GameplayEffect修改角色属性&#xff08;二&#xff09; 前面&#xff0c;介绍了GameplayEffect的Instant和Duration的使用&#xff0c;这一篇主要介绍一下无限制时间类型的infinite的使用方式。 无限时间限制模式下&#xff0c;如果你的周期时间&#xff…

Android meminfo 查看方法及解析

目录 Android 上查看memory 信息的方法 内存限制的信息 手动释放缓存 例 adb shell dumpsys meminfo pid 解析 adb shell dumpsys meminfo 汇总信息说明 Total RAM Free RAM ION Used RAM Lost RAM ZRAM /proc/meminfo 参考文档 Android 上查看memory 信息的方法 …

零基础入门Vue之影分身之术——列表渲染渲染原理浅析

听我说 从 条件渲染 那一篇&#xff0c;我学习到了如何用Vue对dom节点根据条件显示 但单单有条件还不够啊&#xff0c;有时候数据是一大坨一大坨的数据&#xff0c;如果Vue不提供咱要么使用“v-html” 要么就没办法实现 v-html又感觉太low了&#xff0c;Vue提供了另外的指令更好…

vscode配置wsl ubuntu c++的环境

在ubuntu安装llvm/clang sudo apt install llvm clang clangd lldb vscode的调试器接口是按GDB开发的&#xff0c;所以需要一个适配器&#xff0c;lldb-mi就是这个适配器。lldb-mi原来是llvm项目的一部分&#xff0c;后面成为了一个单独的项目https://github.com/lldb-tools/…

【Docker】.NET Core 6.0 webapi 发布上传到Docker Desktop并启动运行访问,接口返回数据乱码解决方法

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Docker容器》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

C语言——联合体类型

&#x1f4dd;前言&#xff1a; 在前面两篇文章&#xff1a;C语言——结构体类型&#xff08;一&#xff09;和C语言——结构体&#xff08;二&#xff09;中&#xff0c;我们讲述了C语言中重要的数据类型之一&#xff1a;结构体类型&#xff0c;今天我们来介绍一下C语言中的另…

C语言数组元素的引用

存储模式&#xff1a;一片连续的内存&#xff0c;按数据类型分割成若干相同大小的格子元素下标&#xff1a;数组开头位置的偏移量&#xff0c;a[0]引用第1个格子&#xff0c;a[1]引用第2个格子&#xff0c;以此类推 int a[5]; // 有效的下标范围是 0 ~ 4 a[0] 1; a[1] 2; a[2…

【机器学习】科学库使用手册第2篇:机器学习任务和工作流程(已分享,附代码)

本系列文章md笔记&#xff08;已分享&#xff09;主要讨论人工智能相关知识。主要内容包括&#xff0c;了解机器学习定义以及应用场景&#xff0c;掌握机器学习基础环境的安装和使用&#xff0c;掌握利用常用的科学计算库对数据进行展示、分析&#xff0c;学会使用jupyter note…

linux 自动定时清理缓存

文章目录 1&#xff0c;查看内存占用情况&#xff1a;1.1、free和available的区别&#xff1f;1.2、交换分区的作用&#xff1f; 2&#xff0c;手动清理命令3&#xff0c;定时自动清理3.1&#xff0c;创建文件夹3.2&#xff0c;新建文件cleanBuffer.sh3.3&#xff0c;添加内容3…