【动态规划】1、不同路径II+2、三角形最小路径和

news2024/9/20 16:31:05

1、不同路径II(难度中等)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
该题对应力扣网址

AC代码

只会写简单的if-else

class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
        //1、定义子问题
        //2、子问题递推关系
        //3、确定dp数组的计算顺序
        int m=obstacleGrid.size();
        int n=obstacleGrid[0].size();
        vector <vector<int>> dp(m,vector<int>(n));
        dp[0][0]=1;
        if(m==1 && n==1 && obstacleGrid[m-1][n-1]==0) return 1;
        if(m==1 && n==1 && obstacleGrid[m-1][n-1]==1) return 0;
        if(obstacleGrid[m-1][n-1]==1){
            return 0;
        }
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(i==0 && j==0){
                    dp[i][j]=1;
                }
                if(i==0 && j!=0){
                    if(obstacleGrid[i][j-1]==1){
                        dp[i][j]=0;
                    }
                    else{
                        dp[i][j]=dp[i][j-1];
                    }
                }
                if(j==0 && i!=0){
                    if(obstacleGrid[i-1][j]==1){
                        dp[i][j]=0;
                    }
                    else{
                        dp[i][j]=dp[i-1][j];
                    }
                }
                if(i!=0 && j!=0){
                    if(obstacleGrid[i-1][j]==1 && obstacleGrid[i][j-1]==1){
                        dp[i][j]=0;
                    }
                    if(obstacleGrid[i-1][j]==1 && obstacleGrid[i][j-1]==0){
                        dp[i][j]=dp[i][j-1];
                    }
                    if(obstacleGrid[i][j-1]==1 && obstacleGrid[i-1][j]==0){
                        dp[i][j]=dp[i-1][j];
                    }
                    if(obstacleGrid[i][j-1]==0 && obstacleGrid[i-1][j]==0){
                        dp[i][j]=dp[i-1][j]+dp[i][j-1];
                    }
                }
            }
        }

        return dp[m-1][n-1];
    }
};

2、三角形最小路径和(难度:中等)

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

该题对应力扣网站

AC代码

主要思路:

要知道这是个三角形
分为三种情况:
1、最后一行的最左边(j==0):这时候j-1超出范围
	dp[i][j]=dp[i-1][j]+triangle[i][j];
2、最后一行的最右边(j==i):这时候j超出范围
	dp[i][j]=dp[i-1][j-1]+triangle[i][j];
3、剩余情况:
	dp[i][j]=min(dp[i-1][j]+triangle[i][j],dp[i-1][j-1]+triangle[i][j]);

最后遍历最后一行,返回最小值
class Solution {
public:
    int minimumTotal(vector<vector<int>>& triangle) {
        int m=triangle.size();
        int n=triangle[m-1].size();
        vector <vector<int>> dp(m+1,vector<int>(n+1));
        dp[0][0]=triangle[0][0];
        if(m==0)return triangle[0][0];
        for(int i=1;i<m;i++){
            for(int j=0;j<i+1;j++){
                if(j==0){
                    dp[i][j]=dp[i-1][j]+triangle[i][j];
                }
                if(j==i){
                    dp[i][j]=dp[i-1][j-1]+triangle[i][j];
                }
                if(j!=i && j!=0){
                    dp[i][j]=min(dp[i-1][j]+triangle[i][j],dp[i-1][j-1]+triangle[i][j]);
                }
            }
        }
        int min=INT_MAX;
        for(int k=0;k<n;k++){
            if(dp[m-1][k]<min){
                min=dp[m-1][k];
            }
        }
        return min;
    }
};

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

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

相关文章

快速入手mybits(xml配置文件版本)

目录 Blue的留声机 1、快速入手 第一步&#xff1a;导依赖 第二步&#xff1a;配置mybits-config.xml文件 第三步&#xff1a;编写sql映射文件BlogMapper.xml 第四步&#xff1a;编写运行文件&#xff0c;执行sql 2、Mapper代理开发&#xff08;企业中最常用&#xff09;…

GraphRAG

GraphRAG 与基线 RAG RAG 检索增强生成 &#xff08;RAG&#xff09; 是一种使用真实世界信息改进 LLM 输出的技术。这种技术是大多数基于 LLM 的工具的重要组成部分&#xff0c;大多数 RAG 方法使用向量相似性作为搜索技术&#xff0c;我们称之为基线 RAG。 RAG 技术在帮助 …

立即升级你的前端技能!跟随这份Vue3项目搭建教程,从零基础到专业,一步步掌握最新Web开发技术,打造响应快速、界面优雅的现代网站。

全能开发套餐&#xff0c;轻松打造现代网站&#xff01;Vue3携手Vite带来开发新体验&#xff0c;结合Axios、Pinia、Element Plus实现功能与美观并重&#xff0c;TailwindCSS与DaisyUI提供设计灵活性&#xff0c;Router 4处理页面导航。从前端到后端&#xff0c;一站式解决&…

必看!全网最详细的仓库管理办法!

如今仓库管理的优劣直接影响着企业的运营效率和成本控制。一个高效、有序的仓库能够确保货物的及时供应&#xff0c;减少库存积压&#xff0c;提高客户满意度&#xff1b;而一个混乱、无序的仓库则可能导致货物丢失、损坏&#xff0c;延误交货&#xff0c;甚至影响企业的声誉和…

【宠粉赠书】Python数据可视化:科技图表绘制

为了回馈粉丝们的厚爱&#xff0c;今天小智给大家送上一套数据可视化学习的必备书籍——《Python数据可视化&#xff1a;科技图表绘制》。下面我会详细给大家介绍这本书&#xff0c;文末留有领取方式。 图书介绍 《Python数据可视化&#xff1a;科技图表绘制》结合编者多年的数…

顶象文字点选模型识别

注意&#xff0c;本文只提供学习的思路&#xff0c;严禁违反法律以及破坏信息系统等行为&#xff0c;本文只提供思路 如有侵犯&#xff0c;请联系作者下架 文字点选如何训练&#xff0c;之前的文章说了很多遍了&#xff0c;这里只放现成的模型供查看&#xff0c;有需要成品联系…

datax做增量导入数据到hive:mysql>hive

为什么要做增量导入? 例如mysql表中的数据导入hive&#xff0c;如果第一天抽取了mysql中t_user表中的全部数据&#xff0c;则第二天只需要抽取新增数据即可&#xff01; 增加导入是利用where 条件查询实现的&#xff0c;查询条件一般是自增的id或者时间列 下面演示基于时间列的…

sns.regplot()用法

概念 seaborn.regplot&#xff08;&#xff09;函数可以在两个变量之间绘制一个线性回归模型&#xff0c;可以输出线性回归线以及数据的散点图。 参数解释 seaborn.regplot(dataNone, xNone, yNone, x_estimatorNone, x_binsNone, x_cici, scatterTrue, fit_regTrue, ci95, …

s7_200smart采集遇到的问题

对s7_200smart(plc设备不太熟悉)第一次使用了modbus协议来采集数据是采集不到bcd码类型的数据&#xff0c;modbus里面不支持这个数据类型。采用西门子类型来设置采集数据也遇到不少问题&#xff1f; 第一&#xff1a;采集速率不可以太高&#xff0c;最好1秒一次&#xff0c;通…

YOLOv8改进 | 主干网络 | 用EfficientNet卷积替换backbone【教程+代码 】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

我们终究会懂得自己并非无所不能

今天参加“全民健身日”公开水域游泳比赛&#xff0c;第一次在游泳上有一种无力感。 以前以为自己游泳怎么都不会累&#xff0c;大不了踩踩水&#xff0c;或者在水上漂着。今天竟然途中可耻地抱着“跟屁虫”休息了。 是不是承认自己的无能&#xff0c;也是一种进步&#xff1f;…

【简历】苏州某大学211硕士:25届Java简历指导通过率低

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这是一份25届211硕士同学的Java简历&#xff0c;这个学历他的目标必然是冲大厂。 不过他的简历几乎没什么提问点&#xff0c;211在大厂…

1.2 C 语言环境:MinGW 与 CLion 的安装与配置

目录 1 C 语言的由来 2 安装 MinGW 编译器 3 Windows 中安装 CLion 开发环境 3.1 安装 CLion 开发环境 3.2 运行试用 30 天 3.3 新建项目​ 3.4 汉化 4 Mac 中安装 Clion 开发环境 4.1 安装 CLion 开发环境 4.2 运行试用 30 天 4.3 新建项目 ​4.4 汉化 5 向日葵的…

【Linux】系列入门摘抄笔记-6-tar打包压缩和vim编辑器

打包、压缩和解压命令 压缩文件一定要严格区分扩展名 tar 打包程序 tar [主选项+辅选项] [包名] [目标文件或目录]描述:tar命令是Linux下最常用的打包程序。使用tar命令打出来的包称为tar包,因为tar包文件的后缀通常是“.tar”。 每条tar命令只能有一个主选项,而辅助选项…

C语言实现-排序1

文章目录 &#x1f3af;引言&#x1f453;排序1.排序的概念以及运用1.1概念1.2运用1.3常见的排序算法 2.排序算法的实现2.1插入排序2.1.1直接插入排序2.1.2希尔排序 2.2选择排序2.2.1直接选择排序2.2.2堆排序 &#x1f947;结语 &#x1f3af;引言 欢迎来到HanLop博客的C语言数…

C#如何对某个词在字符串中出现的次数进⾏计数(LINQ)

文章目录 基础知识实现方法基础计数LINQ优化处理标点符号总结 LINQ&#xff08;Language-Integrated Query&#xff09;是C#和VB.NET中强大的查询语言&#xff0c;它可以用来查询集合、SQL数据库、XML文档等。在C#中&#xff0c;我们可以使用LINQ来简化对字符串中特定单词出现次…

C语言实现游戏2048(超详细!!!超易懂!!!)

2048是众所周知的一款经典游戏&#xff0c;在曾经没有智能电脑和手机的年代&#xff0c;也陪伴了我们许多年。那今天就让我们用C语言来回顾一下这款游戏吧~ 一、游戏2048的思路 2048游戏的玩法是在初始的时候&#xff0c;给玩家一个4*4格子的&#xff0c;其中内容全为空的棋盘…

基于SpringBoot+Vue的供应商管理系统(带1w+文档)

基于SpringBootVue的供应商管理系统(带1w文档) 基于SpringBootVue的供应商管理系统(带1w文档) 现今&#xff0c;互联网在我们的日常生活占据着日益重要的地位&#xff0c;我们也越来越离不开对移动设备、电脑等上网设备的使用。传统的供应商管理系统模式主要依靠管理人员纯手工…

PyQt6简易案例代码GUI界面小工具——实现二维码生成器+自定义前后背景色(练手正合适)

目录 专栏导读PyQt6的介绍PyQt6的主要特点包括&#xff1a;使用PyQt6开发应用程序的一般步骤&#xff1a; 库的安装1、初始化与界面设计2、设置前景色、背景色功能完整代码总结 专栏导读 &#x1f338; 欢迎来到Python办公自动化专栏—Python处理办公问题&#xff0c;解放您的双…

IP地址的构成

1. IPv4地址 IPv4地址是最早且目前仍然广泛使用的IP地址版本。由32位二进制数构成&#xff0c;应为32为二进制数太长了&#xff0c;所以我们通常用四个十进制数字来表示&#xff0c;每个数字之间用”.”分隔。这些数字的范围是0到255。IPv4地址的格式为&#xff1a; “A.B.C.…