day 39:62. 不同路径63. 不同路径 II

news2024/11/29 20:59:16

动态规划

  • [62. 不同路径](https://leetcode.cn/problems/unique-paths/description/)
    • 1. dp数组以及下标名义
    • 2. 递归公式
    • 3. dp数组如何初始化
    • 4. 遍历顺序
    • 5.代码
  • [63. 不同路径 II:有障碍物](https://leetcode.cn/problems/unique-paths-ii/description/)
    • 1. dp数组以及下标名义
    • 2. 递归公式
    • 3. dp数组如何初始化:没有障碍时,第一行和第一列为1,遇到障碍后所有都为0,因为本身定义数组初始为0的所有不用管它
    • 4. 遍历顺序(从左到右一层一层遍历,遇到障碍跳过)
    • 5.代码

62. 不同路径

在这里插入图片描述

1. dp数组以及下标名义

dp[i][j]:表示从(0 ,0)出发,到达坐标(i,j)位置路径数

2. 递归公式

dp[i][j] = dp[i][j - 1] + dp[i - 1][j];

3. dp数组如何初始化

首先dp[i][0]一定都是1,因为从(0, 0)的位置到(i, 0)的路径只有一条,那么dp[0][j]也同理

       for(int i = 1; i < n; i++) {
           dp[0][i] = 1;
       }
        for(int j = 1; j < m; j++) {
           dp[j][0] = 1;

4. 遍历顺序

在这里插入图片描述

5.代码

class Solution {
public:
    int uniquePaths(int m, int n) {
       if(m == 0&&n == 0)return 0;
       if( m == 1 && n == 1)return 1;
        vector<vector<int>>dp(m + 1,vector<int>(n + 1));
       for(int i = 1; i < n; i++) {
           dp[0][i] = 1;
       }
        for(int j = 1; j < m; j++) {
           dp[j][0] = 1;
       }
        for( int i = 1; i < m; i++) {
             for( int j = 1; j < n; j++) {
                 dp[i][j] = dp[i][j - 1] + dp[i - 1][j];
                 cout<<i<<","<<j<<":"<<dp[i][j]<<endl;
             }
        }
        return dp[m - 1][n - 1];

    }
};

63. 不同路径 II:有障碍物

在这里插入图片描述

1. dp数组以及下标名义

dp[i][j] :表示从(0 ,0)出发,到(i, j) 有dp[i][j]条不同的路径。

2. 递归公式

递推公式和62.不同路径一样,dp[i][j] = dp[i - 1][j] + dp[i][j - 1]

3. dp数组如何初始化:没有障碍时,第一行和第一列为1,遇到障碍后所有都为0,因为本身定义数组初始为0的所有不用管它

在这里插入图片描述
与上一题不同

vector<vector<int>>dp(m + 1,vector<int>(n + 1,0));
          for(int i = 0; i < m && obstacleGrid[i][0] == 0; i++) {
             dp[i][0] = 1;
       }
         for(int j = 0; j < n && obstacleGrid[0][j] == 0; j++) {
             dp[0][j] = 1;
       }

4. 遍历顺序(从左到右一层一层遍历,遇到障碍跳过)

for (int i = 1; i < m; i++) {
    for (int j = 1; j < n; j++) {
        if (obstacleGrid[i][j] == 1) continue;
        dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
    }
}

5.代码

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int m = obstacleGrid.size();
        int n = obstacleGrid[0].size();
        //如果起点或者终点有障碍,直接返回0
       if(obstacleGrid[m - 1][n - 1] == 1 || obstacleGrid[0][0] == 1) return 0 ;
        vector<vector<int>>dp(m + 1,vector<int>(n + 1,0));
          for(int i = 0; i < m && obstacleGrid[i][0] == 0; i++) {
             dp[i][0] = 1;
       }
         for(int j = 0; j < n && obstacleGrid[0][j] == 0; j++) {
             dp[0][j] = 1;
       }
       for( int i = 1; i < obstacleGrid.size(); i++) {
             for( int j = 1; j < obstacleGrid[0].size(); j++) {
                 if(obstacleGrid[i][j] ) continue; //有障碍时continue
                    dp[i][j] = dp[i][j - 1] + dp[i - 1][j];                    
                 }
             }
        return dp[obstacleGrid.size() - 1][obstacleGrid[0].size() - 1];
    }
};

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

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

相关文章

银行从业——法律法规——经济基础知识

第一章、经济基础知识 第一节、宏观经济分析 【 知识点1】 宏观经济发展目标 宏观经济发展的总体目标一般包括四个&#xff1a; 宏观经济发展的总体目标 衡量指标1、经济增长国内生产总值&#xff08;GDP&#xff09;2、充分就业 失业率3、物价稳定通货膨胀率4、国际…

【HISI IC萌新虚拟项目】Package Process Unit项目全流程目录

说明 Package Process Unit虚拟项目是HISI部分部门芯片设计与验证新员工的培训项目,一般会分配6~10周的时间独立开发该项目并完成验收。在整个项目中,新员工需要熟悉工作站、项目流程、公共环境与代码等,并根据方案文档独立设计ppu模块,之后进行功能验证与综合等芯片交付流…

代码随想录算法训练营第四十六天|139.单词拆分、关于多重背包,你该了解这些!、背包问题总结篇!

文章目录 一、139.单词拆分二、关于多重背包&#xff0c;你该了解这些&#xff01;三、背包问题总结篇&#xff01;总结 一、139.单词拆分 public boolean wordBreak(String s, List<String> wordDict) {//完全背包问题&#xff0c;因为可以重复&#xff0c;背包正序排列…

chatgpt赋能python:Python匹配符号:快速有效地处理文本

Python匹配符号&#xff1a;快速有效地处理文本 什么是Python匹配符号&#xff1f; Python是一种灵活的编程语言&#xff0c;可以轻松地处理文本数据。在Python中&#xff0c;使用正则表达式来匹配符号。正则表达式是一种模式匹配工具&#xff0c;可以帮助用户找到特定的文本…

day 44 完全背包:518. 零钱兑换 II;377. 组合总和 Ⅳ

完全背包&#xff1a;物品可以使用多次 完全背包1. 与01背包区别 518. 零钱兑换 II1. dp数组以及下标名义2. 递归公式3. dp数组如何初始化4. 遍历顺序:不能颠倒两个for循环顺序5. 代码 377. 组合总和 Ⅳ:与零钱兑换类似&#xff0c;但是是求组合数1. dp数组以及下标名义2. 递归…

ASP.NET Core MVC 从入门到精通之自动映射(二)

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…

034:Mapbox GL双屏地图联动

第034个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中实现双屏联动功能。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共110行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:https://…

Redis入门到实战笔记-数据类型

这里写目录标题 SQL与NoSQL关系型数据库&#xff1a;查询方式&#xff1a; 非关联数据库&#xff1a;查询方式&#xff1a; 总结 认识RedisRedis安装远程连接防火墙设置关闭防火墙开启防火墙检查防火墙状态开放指定端口 Redis数据类型和常见命令keysdelEXISTexpired&#xff0c…

day 41:343. 整数拆分;96.不同的二叉搜索树

动态规划 [343. 整数拆分](https://leetcode.cn/problems/integer-break/description/)1. dp数组以及下标名义2. 递归公式3. dp数组如何初始化4. 遍历顺序:遍历i是从前向后遍历&#xff0c;先有dp[i - j]再有dp[i]5. 代码 96.不同的二叉搜索树1. dp数组以及下标名义2. 递归公式…

计组 第二章错题 2.3 浮点数的表示与运算

4.变形补码就是采用双符号位 &#xff0c;不能避免溢出&#xff0c;只是更方便判断是否溢出 5. 9.B 2047:阶码全1表示正无穷 -&#xff08;11-2*(-52&#xff09;) 10.没有想到用移位 10100是20 12.移码看做无符号数 B、无论有无规格化 都要对阶&#xff0c;并没有方便浮…

【Java 多态】面向对象编程の重要概念,多态是什么,附带小案例

博主&#xff1a;_LJaXi Or 東方幻想郷 专栏&#xff1a; Java | 从入门到入坟 专属&#xff1a;六月一日 | 儿童节 Java 多态 多态 &#x1f9a0;在继承中实现多态 &#x1f3a1;在接口中实现多态 &#x1f9ff; 多态 &#x1f9a0; Java的多态是指同一个方法在不同的对象上有…

深度剖析数据在内存中的存储(C语言)

[目录] 目录 #数据类型详细介绍 数据类型介绍 整型家族归类&#xff1a; 浮点型家族归类: 构造类型&#xff1a; 指针类型: 空类型: #整型在内存中的存储 #大小端字节序存储 #浮点数在内存中的存储 为什么会这样&#xff1f; 一&#xff1a;不是全0也不是全1 二&…

皮卡丘File Inclusion

1.File Inclusion(文件包含漏洞)概述 文件包含&#xff0c;是一个功能。在各种开发语言中都提供了内置的文件包含函数&#xff0c;其可以使开发人员在一个代码文件中直接包含&#xff08;引入&#xff09;另外一个代码文件。 比如 在PHP中&#xff0c;提供了&#xff1a; incl…

day 42:01背包问题;416. 分割等和子集

动态规划:01背包问题 01背包问题基础1. 暴力解法2. 二维dp数组01背包1.确定dp数组以及下标的含义2.递推公式3.dp数组如何初始化4.遍历顺序5.测试代码 01背包理论基础&#xff08;滚动数组&#xff09;&#xff1a;将二维dp转换为一维dp1. dp数组以及下标名义2. 递归公式3. dp数…

day 45:爬楼梯进阶版;322. 零钱兑换;279. 完全平方数

爬楼梯进阶版 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 一步一个台阶&#xff0c;两个台阶&#xff0c;三个台阶&#xff0c;…&#xff0c;直到 m个台阶。问有多少种不同的方法可以爬到楼顶呢&#xff1f; 1. dp数组以及下标名义 dp[j]&#xff1a;爬到…

《商用密码应用与安全性评估》第四章密码应用安全性评估实施要点4.5密码应用安全性评估测评工具

目录 测评工具使用和管理要求 测评工具体系 通用测评工具 专用测评工具 典型测评工具概述 测评工具使用和管理要求 测评过程中使用的专用测评工具应通过国家密码管理局的审批或者经检测认证合格。为确保工具测试结果的准确可信&#xff0c;测评机构应确认使用的专用工具是最…

chatgpt赋能python:Python删除离群值

Python 删除离群值 介绍 离群值是指在数据集中远离其他观测值的数据点&#xff0c;可以是数据输入或数据损坏产生的错误。它们通常会对分析造成影响&#xff0c;因此需要处理它们。 Python 是一种流行的编程语言&#xff0c;可以用于处理数据集和删除离群值。本文将介绍 Pyt…

天然气网络潮流计算模型研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

# Anolis OS8 磁盘扩容

Anolis OS8 磁盘扩容 最近学习的时候&#xff0c;使用Vmware安装了AnolisOS8进行测试&#xff0c;随着学习的深入&#xff0c;组件安装越来越多&#xff0c;磁盘不够用了&#xff0c;但是安装的组件又太多&#xff0c;重新装个虚拟机又得重新装各种组件。所以决定对磁盘进行扩…

Payroll工资单中英文对照明细

不知道大家的工资单是中文的还是英文的&#xff0c;如果是英文的&#xff0c;刚开始看有些看不懂&#xff08;我就是&#xff09;&#xff0c;那么可以在这里找到对应的翻译。如果中文的&#xff0c;而你又想知道对应英文怎么写的话&#xff0c;也欢迎查阅以下表格。ps.个人所得…