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

news2024/10/6 6:48:33

● 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列;并且初始化第一行和第一列的为1
        for(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.coloradmin.cn/o/1436105.html

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

相关文章

文心一言4.0API接入指南

概述 文心一言是百度打造出来的人工智能大语言模型&#xff0c;具备跨模态、跨语言的深度语义理解与生成能力&#xff0c;文心一言有五大能力&#xff0c;文学创作、商业文案创作、数理逻辑推算、中文理解、多模态生成&#xff0c;其在搜索问答、内容创作生成、智能办公等众多…

jmeter二次开发函数-生成身份证号

代码参考这个 java 随机生成身份证代码 Java的身份证号码工具类 pom文件添加 <dependency><groupId>org.apache.jmeter</groupId><artifactId>ApacheJMeter_core</artifactId><version>5.4.1</version></dependency><d…

@ResponseBody

目录 概述 用途 使用案例 用 ResponseBody 设置返回值 概述 ResponseBody注解的作用是将方法返回的对象&#xff0c;通过适当的转换器(HttpMessageConverter)转换为指定的格式之后&#xff0c;写入到response对象的body区&#xff0c;通常用来返回JSON数据或者是XML数据 用…

transformers重要组件(模型与分词器)

1、模型&#xff1a; from transformers import AutoModelcheckpoint "distilbert-base-uncased-finetuned-sst-2-english" model AutoModel.from_pretrained(checkpoint) 除了像之前使用 AutoModel 根据 checkpoint 自动加载模型以外&#xff0c;我们也可以直接…

mhz_c1f

信息收集 探测到存活主机的IP地址为 192.168.101.32 # nmap -sT --min-rate 10000 -p- 192.168.101.32 -oN port.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-03 13:41 CST Nmap scan report for 192.168.101.32 Host is up (0.0020s latency). Not shown: 6553…

高阶滤波器

一阶后向差分&#xff1a;s&#xff08;1-z^(-1)&#xff09;/T dx/dt[x(k)-x(k-1)]/T[x(k)-x(k)z^(-1)]/Tx(k)*&#xff08;1-z^(-1)&#xff09;/T 一阶前向差分&#xff1a;s(z-1)/T dx/dt[x(k1)-x(k)]/T[z*x(k)-x(k)]/Tx(k)*(z-1)/T 双线性差分&#xff1a;s(2/T)*(1-z…

环境配置:Udacity的Self-Driving项目安装运行

前言 Udacity的自动驾驶工程师纳米学位项目&#xff08;Self-Driving Car Engineer Nanodegree Program&#xff09;是一项面向学习者的前沿技术项目&#xff0c;旨在提供全面的自动驾驶工程师培训。该项目由Udacity与自动驾驶领域的领先公司和专业人士合作开发&#xff0c;涵…

常用的EasyExcel表格处理-2(动态合并、自适应宽高)

EasyExcel官网&#xff1a;点击查看 1、动态合并单元格 此处主要根据自定义处理类ExcelFillCellMergeStrategy进行处理&#xff0c;具体内容可看代码注释。 1.1 前端调用controller PostMapping("/download/template")public void toDoExport(HttpServletResponse…

linux k8s 源码编译及单集群测试

目录 概述实践安装插件docker 在线安装containerd安装二进制安装yum安装修改containder配置文件 cnietcdrsyncgo设置golang代理 安装CFSSL下载kubernetes代码编译启动本地单节点集群问题k8s没有被正常启动该如何k8s正常启动日志测试 结束 概述 此文详细说明在 centos 7上编译 k…

専攻春节钜惠

専攻春节钜惠 大家好&#xff0c;新春佳节到来之际&#xff0c;为了答谢大家多年来的支持厚爱&#xff0c;也为了更广泛的推广VBA应用&#xff0c;“VBA语言専攻”在春节期间再次推出钜惠活动&#xff0c;时间2月9日到2月17日&#xff08;大年三十到正月初八&#xff09; 1 &…

算法学习——LeetCode力扣数组篇

算法学习——LeetCode力扣数组篇 704. 二分查找 704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 描述 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值…

C++中string类的基本用法

文章目录 一、string的默认成员函数1. 构造函数2.赋值重载 二、string的常见容量操作1.size、length、capacity2.clear3.empty4. reserve5. resize 三、string的访问及遍历操作1. operator[]2. 迭代器3. 范围for 四、string的修改操作1. push_back2. append3. operator4. c_str…

【软考设计师笔记】一篇文章带你了解数据库

【考证须知】IT行业高含金量的证书(传送门)&#x1f496; 【软件设计师笔记】计算机系统基础知识考点(传送门) &#x1f496; 【软件设计师笔记】程序语言设计考点(传送门) &#x1f496; 【软件设计师笔记】操作系统考点(传送门)&#x1f496; 【软件设计师笔记】什么是软…

校园圈子交友系统---在你身边的脱单神器!APP小程序H5,三端都有,源码交付,随意二开!

相比社会的交友环境&#xff0c;校园交友更加封闭也更容易成功&#xff0c;很多朋友都能在校园里找到和自己志同道合的伙伴&#xff0c;或者一段适合自己的缘分 有多种不同的聊天方法&#xff0c;语音&#xff0c;文本&#xff0c;视频&#xff0c;满足社会需求&#xff0c;软…

特征工程:特征构建

目录 一、前言 二、正文 Ⅰ.分类特征重新编码 ①分类特征 ②离散特征 ③多标签类别编码 Ⅱ.数值特征重新编码 ①多项式 ②多个变量的多项式特征 Ⅲ.文本数据的特征构建 ①文本词频条形图 ②词袋模型 ③TF-IDF矩阵 三、结语 一、前言 特征工程中的特征构建的主要目的是生…

记一次使用ASMLIB标记磁盘导致的数据库系统宕机案例

在对某医院HIS数据库环境搜集过程中&#xff0c;发现这套Oracle RAC数据库没有正确使用到multipath提供的多路径磁盘&#xff0c;本着对用户及合作伙伴负责的态度&#xff0c;将过程做一描述说明&#xff0c;以及提出一点解决问题的思路建议。 系统环境&#xff1a; 操作系统…

第八届:世界3D渲染挑战赛《无尽阶梯》正式开启

全世界的3D艺术创作者们引颈期盼的盛事“全球3D渲染艺术大奖赛”已迈入第八个年头。本届比赛的主题为“无尽的阶梯”&#xff0c;参赛者们可通过挑战赛展现自身的创造力&#xff0c;比赛在行业内拥有极高的知名度&#xff0c;含金量十足&#xff0c;参赛这可通过这里提高自己在…

[React] ref属性

简介 ref 即 reference &#xff0c;是 React 提供给我们的安全访问 DOM 元素或者某个组件实例的句柄。 组件被调用时会新建一个该组件的实例&#xff0c;而 ref 就会指向这个实例。它可以是一个回调函数&#xff0c;这个回调函数会在组件被挂载后立即执行。 为了防止内存泄漏…

【C语言】贪吃蛇 详解

该项目需要的技术要点 C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32API等。 由于篇幅限制 和 使知识模块化&#xff0c; 若想了解 使用到的 Win32API 的知识&#xff1a;请点击跳转&#xff1a;【Win32API】贪吃蛇会使用到的 Win32API 目录 1. 贪吃蛇游…

配置Jenkins自动构建打包项目

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 需求说明 1、给A项目配置jenkins每2小时无条件自动构建一次&#xff0c;无论是否有代码提交。 2、给B项目配置jenkins每15分钟检…