代码随想录第36天|动态规划

news2024/11/26 9:36:07

62. 不同路径

在这里插入图片描述
在这里插入图片描述
补充: 对二维数组的操作
请添加图片描述

  1. dp[j][i] 表示到 j,i 有多少种路径
  2. 递推公式: dp[j][i] = dp[j - 1][i] + dp[j][i - 1]
  3. 初始化: dp[0][i] 和 dp[j][0] 都只有1种情况
  4. 遍历顺序: 由于dp[j][i] 由 上和左的元素推导, 所以采用从左到右、从上到下的遍历顺序
class Solution {
public:
    void uniquePaths(int m, int n) {
        vector<vector<int>> dp(m, vector<int>(n, 0));
        //初始化
        for (int i = 0; i < dp[0].size(); i++) dp[0][i] = 1;
        for (int i = 0; i < dp.size(); i++) dp[i][0] = 1;
        //递推公式
        for (int j = 1; j < m; j++) {
            for (int i = 1; i < n; i++) {
                dp[j][i] = dp[j][i - 1] + dp[j - 1][i];
            }
        }
        //输出dp[j][i]
        for (int j = 0; j < dp.size(); j++) {
            for (int i = 0; i < dp[i].size(); i++) {
                cout << dp[j][i] << " ";
            }
            cout << endl;
        }
        return dp[m - 1][n - 1];                  
    }
};

63. 不同路径 II

在这里插入图片描述
在这里插入图片描述
参考

  1. dp[j][i] 表示到(j, i) 后的路径数
  2. 递推公式
  3. 初始化 dp[0][i] 和 dp[j][0] 为 1 ,当遇到障碍物后变 0
  4. 遍历顺序同上
class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        int n = obstacleGrid[0].size();
        int m = obstacleGrid.size();        
        vector<vector<int>> dp = vector<vector<int>>(m, vector<int>(n, 0));
        for (int i = 0; i < n; i++) {
            if (obstacleGrid[0][i] == 1) break;
            dp[0][i] = 1;
        }
        for (int j = 0; j < m; j++) {
            if (obstacleGrid[j][0] == 1) break;
            dp[j][0] = 1;
        }

        for (int j = 1; j < m; j++) {
            for (int i = 1; i < n; i++) {
                if (obstacleGrid[j][i] == 1) {//该点有障碍
                    dp[j][i] = 0;                    
                } else {
                    dp[j][i] = dp[j][i - 1] + dp[j - 1][i];
                }              
            }
        }
        return dp[m - 1][n - 1];
    }
};

343. 整数拆分
在这里插入图片描述
在这里插入图片描述

  1. dp[i] : 整数i的最大乘积
  2. 递推公式
  3. 初始化
  4. 遍历顺序

未弄懂


96. 不同的二叉搜索树
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Redis高可用(主从复制、哨兵模式)详解

Redis高可用&#xff08;主从复制、哨兵模式&#xff09;详解 Redis是一种高性能的键值存储系统&#xff0c;能够通过多种机制来实现高可用性&#xff0c;这些机制主要包括主从复制&#xff08;Replication&#xff09;和哨兵模式&#xff08;Sentinel&#xff09;。 Redis 主…

使用 Python 注销、重启、关闭计算机

众所周知&#xff0c;Python 是一种功能强大的脚本语言。在本文中&#xff0c;将编写一个 Python 程序本控制计算机&#xff0c;实现计算机的注销、重启、关闭等操作。 Python 中的 os 模块&#xff0c;提供了一种与操作系统交互的方式&#xff0c;可以使用 os.system() 函数在…

Qt6.6编译Qt二维图形编辑器QVGE源码

QVGE是一个开源的多平台QtC编写的图形编辑器&#xff0c;可以用来画网络节点图&#xff0c;或者其他作用。 QVGE可以轻松创建和参数设定的小型到中型图形(1000节点/边缘)&#xff0c;共同的视觉特性的节点和边缘&#xff1a;形状、尺寸、颜色、标签等。定义(用户定义)属性的图表…

MQTT遗嘱信息(2)

接前一篇文章&#xff1a;MQTT遗嘱信息&#xff08;1&#xff09; 本文内容参考&#xff1a; 什么是MQTT遗嘱消息&#xff1f;如何配置和处理遗嘱消息&#xff1f;_mqtt last will-CSDN博客 MQTT 协议学习&#xff1a;Retained&#xff08;保留消息&#xff09; 与 LWT&#x…

实现矩阵乘法【矩阵乘法复杂度优化】

实现矩阵乘法【矩阵乘法复杂度优化】 题目描述&#xff1a;解题思路一&#xff1a;使用NumPy库解题思路二&#xff1a;三个for循环解题思路三&#xff1a;分块矩阵乘法, 利用多线程或多进程 题目描述&#xff1a; 实现矩阵乘法【矩阵乘法复杂度优化】 解题思路一&#xff1a;…

leetcode 动态规划(基础版)不同路径II

题目&#xff1a; 题解&#xff1a; 一种可行的方案是&#xff0c;因为障碍物无法到达也无法从障碍物过来&#xff0c;所以遇上障碍物时将对应的dp位置设为0即可&#xff0c;这样非常巧妙简单地解决了这个问题。 int uniquePathsWithObstacles(vector<vector<int>&g…

苏东坡传-读书笔记三

苏东坡去世之后&#xff0c;一黄某获得苏东坡一珍贵的手稿&#xff0c;其中有苏东坡下列的名句&#xff1a; “处贫贱易&#xff0c;处富贵难。安劳苦易&#xff0c;安闲散难。忍痛易&#xff0c;忍痒难。人能安闲散&#xff0c;耐富贵&#xff0c;忍痒&#xff0c;真有道之士也…

<sa8650>QCX 诊断模块和错误处理

<sa8650>QCX 诊断模块和错误处理 一、错误报告设计二、QCarCam API 的错误报告2.1 QCarCamRegisterEventCallback2.2 CarCamErrorInfo_t2.3 QCarCamErrorInfo_t2.4 Error ID2.4.1 QCARCAM_ERROR_WARNING2.4.2 QCARCAM_ERROR_SUBSYSTEM_FATAL2.4.3 QCARCAM_ERROR_FATAL2.4.4 Q…

傅里叶变换,拉普拉斯变换,卷积 卷积定理

傅里叶变换&#xff0c;拉普拉斯变换&#xff0c;卷积 & 卷积定理 文章目录 傅里叶变换&#xff0c;拉普拉斯变换&#xff0c;卷积 & 卷积定理开胃小菜&#xff08;收敛性&#xff09;一、傅里叶变换核心原理定义连续时间信号离散时间信号&#xff08;了解&#xff09;…

2毛钱的SOT23-5封装28V、1.5A、1.2MHz DCDC转换器用于LCD偏置电源和白光LED驱动等MT3540升压芯片

前言 之前发了一个TI的BOOST升压芯片&#xff0c;用于LCD偏置电压或LED驱动&#xff0c;请访问以下链接。 6毛钱SOT-23封装28V、400mA 开关升压转换器&#xff0c;LCD偏置电源和白光LED应用芯片TPS61040 国产半导体厂家发展迅猛&#xff0c;今天推荐一个公司带“航天”的升压…

内外网共享文件最优方案,了解一下

基于安全性、合规性、数据防泄漏等原因&#xff0c;为了保护核心数据&#xff0c;企业一般会做内外网隔离&#xff0c;隔离后仍存在数据交换共享的需求。数字化时代&#xff0c;数据的流通与共享成为企业和团队之间日常运营的关键环节。内外网共享文件是指在内网和外网之间共享…

职业技能大赛引领下人工智能专业实训教学的改革研究

在新时代背景下&#xff0c;人工智能&#xff08;AI&#xff09;作为科技发展的前沿领域&#xff0c;正以前所未有的速度影响着社会经济的各个方面&#xff0c;对高素质应用型AI专业人才的需求日益迫切。职业技能大赛作为检验和提升学生实践能力的重要平台&#xff0c;对于促进…

聚观早报 | iPhone 16核心硬件曝光;三星Galaxy全球新品发布会

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 6月28日消息 iPhone 16核心硬件曝光 三星Galaxy全球新品发布会 苹果正多方下注布局AI商店 黄仁勋2024年薪酬3400…

短视频利器 ffmpeg (2)

ffmpeg 官网这样写到 Converting video and audio has never been so easy. 如何轻松简单的使用&#xff1a; 1、下载 官网&#xff1a;http://www.ffmpeg.org 安装参考文档&#xff1a; https://blog.csdn.net/qq_36765018/article/details/139067654 2、安装 # 启用RPM …

[学习笔记]3GPP R18宣布冻结,对物联网的影响是哪些?

6月18日&#xff0c;在上海举行的3GPP RAN&#xff08;无线接入网络项目&#xff09;第104次会议上&#xff0c;5G-A的第一代技术标准R18标准正式冻结。R18标准从立项到冻结历时3年多&#xff0c;是5G标准的第四版&#xff0c;也是面向5G-Advanced&#xff08;5G-A&#xff09;…

容器技术-docker5 (1)

一、docker-compose 常用命令和指令 1. 概要 默认的模板文件是 docker-compose.yml&#xff0c;其中定义的每个服务可以通过 image 指令指定镜像或 build 指令&#xff08;需要 Dockerfile&#xff09;来自动构建。 注意如果使用 build 指令&#xff0c;在 Dockerfile 中设置…

springboot基于web模式的师资管理系统的设计与实现-计算机毕业设计源码040928

摘 要 随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出去&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤&#xff0c;采用Java技术建设师资管理系统 。 本设…

在Python中创建单个元素的元组

在Python中&#xff0c;元组是用于存储多个元素的不可变序列。与列表不同&#xff0c;元组使用圆括号括起来。创建包含多个元素的元组很简单&#xff0c;但创建单个元素的元组则需要特别注意语法。 目录 基本的元组创建创建单个元素的元组单个元素元组的示例 元组是不可变的结…

springboot实习管理系统的设计与实现 LW +PPT+源码+讲解

第三章系统分析与设计 3.1 可行性分析 一个完整的系统&#xff0c;可行性分析是必须要有的&#xff0c;因为他关系到系统生存问题&#xff0c;对开发的意义进行分析&#xff0c;能否通过本系统来补充线下实习管理模式中的缺陷&#xff0c;去解决其中的不足等&#xff0c;通过对…

C++ 教程 - 07 类的静态成员

文章目录 静态成员 静态成员 使用static修饰的成员&#xff1b; 静态的成员变量&#xff1b; 仅保留一份副本&#xff0c;不管创建多少个实例对象&#xff0c;都共享这一份数据&#xff1b;类、对象均可以调用&#xff1b;类外重新声明&#xff0c;并通过类初始化&#xff1b;…