当前位置: 首页 > news >正文

动态规划-----路径问题

动态规划-----路径问题

  • 下降最小路径和
    • 1:状态表示
    • 2:状态转移方程
    • 3 初始化
    • 4 填表顺序
    • 5 返回值
    • 6 代码实现
  • 总结:

下降最小路径和

在这里插入图片描述

1:状态表示

假设:用dp[i][j]表示:到达[i,j]的最小路径

2:状态转移方程

结合图片分析:

在这里插入图片描述

如果图中的A点要到达三角形,那么就会考虑下A点上面的数通过最小路径到达A。
那么通过路径变为 x->A->三角形:

那么我们如何找到到达A点的下降路径呢
由状态表示:用dp[i][j]表示:到达[i,j]的最小路径。
则我们可以转换我到达A点的最小路径为dp[i-1][j-1]或dp[i-1][j]或dp[i-1][j+1]

在这里插入图片描述

在这里插入图片描述

文字总结:在dp表中每一个位置向下都有3种情况,根据这三种情况可以规划处动态方程:
因为要最小路径和,那么我们就可以在三个路径下取最小的路径,这就要用到min
dp[i][j]=  min(dp[i-1][j-1],min(dp[i][j-1],dp[i][j+1]))+d[i][j]----------状态转移方程

3 初始化

初始化的目的是防止越界访问的问题

由状态转移方程得出:dp[i][j]=  min(dp[i-1][j-1],min(dp[i][j-1],dp[i][j+1]))+d[i][j]

由状态转移方程可以得出我们需要上方的3个元素分别是:
[i,j-1]、[i,j]、[i,j+1]

所以我们需要添加1行2列:去避免数组越界的问题(圈圆圈的就是会越界的地方)
在这里插入图片描述
【注意事项】
1:虚线里面的值是要保证不影响后面的操作第一行就不要影响圆圈的值就可以把第一行初始化成0
对于列:不要影响最小值的比对:min(x,y,z)那么把列初始化为正无穷大

在这里插入图片描述

2:d表对应dp表下标的映射

4 填表顺序

填表顺序:从下往上(因为是对于填表左右对状态方程没有什么影响,而上下是有影响的)

5 返回值

返回最后一列的最小值

6 代码实现

class Solution {
public:int minFallingPathSum(vector<vector<int>>& matrix) {//创建dp表int m=matrix.size();int n=matrix[0].size();vector<vector<int>> dp(m+1,vector<int>((n+2),INT_MAX));for(int i=0;i<n+2;i++)//初始化dp[0][i]=0;//填表for(int i=1;i<=m;i++)for(int j=1;j<=n;j++)dp[i][j]=min(dp[i-1][j],min(dp[i-1][j-1],dp[i-1][j+1]))+matrix[i-1][j-1];//返回结果int ret=INT_MAX;for(int i=1;i<=n;i++)ret=min(ret,dp[n][i]);return ret;}
};

总结:

对于路径问题:
第一:分析状态
第二:列出状态方程
第三:初始化(防止越界访问)
第四:填表顺序(由状态方程的出填表顺序)
第五:得出返回值

相关文章:

动态规划-----路径问题

动态规划-----路径问题 下降最小路径和1&#xff1a;状态表示2&#xff1a;状态转移方程3 初始化4 填表顺序5 返回值6 代码实现 总结&#xff1a; 下降最小路径和 1&#xff1a;状态表示 假设&#xff1a;用dp[i][j]表示&#xff1a;到达[i,j]的最小路径 2&#xff1a;状态转…...

Rust循环引用与多线程并发

循环引用与自引用 循环引用的概念 循环引用指的是两个或多个对象之间相互持有对方的引用。在 Rust 中&#xff0c;由于所有权和生命周期的严格约束&#xff0c;直接创建循环引用通常会导致编译失败。例如&#xff1a; // 错误的循环引用示例 struct Node {next: Option<B…...

东方隐侠网安瞭望台第8期

谷歌应用商店贷款应用中的 SpyLoan 恶意软件影响 800 万安卓用户 迈克菲实验室的新研究发现&#xff0c;谷歌应用商店中有十多个恶意安卓应用被下载量总计超过 800 万次&#xff0c;这些应用包含名为 SpyLoan 的恶意软件。安全研究员费尔南多・鲁伊斯上周发布的分析报告称&…...

底部导航栏新增功能按键

场景需求&#xff1a; 在底部导航栏添加power案件&#xff0c;单击息屏&#xff0c;长按 关机 如下实现图 借此需求&#xff0c;需要掌握技能&#xff1a; 底部导航栏如何实现新增、修改、删除底部导航栏流程对底部导航栏部分样式如何修改。 比如放不下、顺序排列、坑点如…...

C++ 之弦上舞:string 类与多样字符串操作的优雅旋律

string 类的重要性及与 C 语言字符串对比 在 C 语言中&#xff0c;字符串是以 \0 结尾的字符集合&#xff0c;操作字符串需借助 C 标准库的 str 系列函数&#xff0c;但这些函数与字符串分离&#xff0c;不符合 OOP 思想&#xff0c;且底层空间管理易出错。而在 C 中&#xff0…...

centos8:Could not resolve host: mirrorlist.centos.org

【1】错误消息&#xff1a; [rootcentos211 redis-7.0.15]# yum update CentOS Stream 8 - AppStream …...

Linux 定时任务 命令解释 定时任务格式详解

目录 时间命令 修改时间和日期 定时任务格式 定时任务执行 查看定时任务进程 重启定时任务 时间命令 #查看时间 [rootlocalhost ~]# date 2021年 07月 23日 星期五 14:38:19 CST --------------------------------------- [rootlocalhost ~]# date %F 2021-07-23 -----…...

aws(学习笔记第十五课) 如何从灾难中恢复(recover)

aws(学习笔记第十五课) 如何从灾难中恢复 学习内容&#xff1a; 使用CloudWatch对服务器进行监视与恢复区域(region)&#xff0c;可用区(available zone)和子网(subnet)使用自动扩展(AutoScalingGroup) 1. 使用CloudWatch对服务器进行监视与恢复 整体架构 这里模拟Jenkins Se…...

github webhooks 实现网站自动更新

本文目录 Github Webhooks 介绍Webhooks 工作原理配置与验证应用云服务器通过 Webhook 自动部署网站实现复制私钥编写 webhook 接口Github 仓库配置 webhook以服务的形式运行 app.py Github Webhooks 介绍 Webhooks是GitHub提供的一种通知方式&#xff0c;当GitHub上发生特定事…...

【C语言】递归的内存占用过程

递归 递归是函数调用自身的一种编程技术。在C语言中&#xff0c;递归的实现会占用内存栈&#xff08;Call Stack&#xff09;&#xff0c;每次递归调用都会在栈上分配一个新的 “栈帧&#xff08;Stack Frame&#xff09;”&#xff0c;用于存储本次调用的函数局部变量、返回地…...

365天深度学习训练营-第P6周:VGG-16算法-Pytorch实现人脸识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 文为「365天深度学习训练营」内部文章 参考本文所写记录性文章&#xff0c;请在文章开头带上「&#x1f449;声明」 &#x1f37a;要求&#xff1a; 保存训练过…...

企业AI助理在数据分析与决策中扮演的角色

在当今这个数据驱动的时代&#xff0c;企业每天都需要处理和分析大量的数据&#xff0c;以支持其业务决策。然而&#xff0c;面对如此庞大的数据量&#xff0c;传统的数据分析方法已经显得力不从心。幸运的是&#xff0c;随着人工智能&#xff08;AI&#xff09;技术的不断发展…...

洛谷 B2029:大象喝水 ← 圆柱体体积

【题目来源】https://www.luogu.com.cn/problem/B2029【题目描述】 一只大象口渴了&#xff0c;要喝 20 升水才能解渴&#xff0c;但现在只有一个深 h 厘米&#xff0c;底面半径为 r 厘米的小圆桶 &#xff08;h 和 r 都是整数&#xff09;。问大象至少要喝多少桶水才会解渴。 …...

go每日一题:mock打桩、defer、recovery、panic的调用顺序

题目一&#xff1a;单元测试中使用—打桩 打桩概念&#xff1a;使用A替换 原函数B&#xff0c;那么A就是打桩函数打桩原理&#xff1a;运行时&#xff0c;通过一个包&#xff0c;将内存中函数的地址替换为桩函数的地址打桩操作&#xff1a;利用Patch&#xff08;&#xff09;函…...

STM32F103 HSE时钟倍频以及设置频率函数(新手向,本人也是新手)

HSE_SetSysCLK是野火教程里的,不懂的去这 16-RCC&#xff08;第3节&#xff09;使用HSE配置系统时钟并使用MCO输出监控系统时钟_哔哩哔哩_bilibili HSE_AutoSetHSE的算法部分是自己写的,用了一个转接数组。C语言不支持bool所以自己定义了一个boolK代替bool。 AutoHSE.h: /**…...

renderExtraFooter 添加本周,本月,本年

在 Ant Design Vue 中&#xff0c;a-date-picker 组件提供了一个 renderExtraFooter 属性&#xff0c;可以用来渲染额外的页脚内容。你可以利用这个属性来添加“本周”、“本月”和“本年”的按钮。下面是如何在 Vue 2 项目中实现这一功能的具体步骤&#xff1a; 1.确保安装了…...

SprinBoot整合KafKa的使用(详解)

前言 1. 高吞吐量&#xff08;High Throughput&#xff09; Kafka 设计的一个核心特性是高吞吐量。它能够每秒处理百万级别的消息&#xff0c;适合需要高频次、低延迟消息传递的场景。即使在大规模分布式环境下&#xff0c;它也能保持很高的吞吐量和性能&#xff0c;支持低延…...

【机器学习】CatBoost 模型实践:回归与分类的全流程解析

一. 引言 本篇博客首发于掘金 https://juejin.cn/post/7441027173430018067。 PS&#xff1a;转载自己的文章也算原创吧。 在机器学习领域&#xff0c;CatBoost 是一款强大的梯度提升框架&#xff0c;特别适合处理带有类别特征的数据。本篇博客以脱敏后的保险数据集为例&#x…...

PyTorch 实现动态输入

使用 PyTorch 实现动态输入&#xff1a;支持训练和推理输入维度不一致的 CNN 和 LSTM/GRU 模型 在深度学习中&#xff0c;处理不同大小的输入数据是一个常见的挑战。许多实际应用需要模型能够灵活地处理可变长度的输入。本文将介绍如何使用 PyTorch 实现支持动态输入的 CNN 和…...

【Linux相关】查看conda路径和conda和cudnn版本、安装cudnn、cuDNN无需登录官方下载链接

【Linux相关】 查看conda路径和conda和cudnn版本 安装cudnn cuDNN无需登录官方下载链接 文章目录 1. 查看信息1.1 查看 Conda 路径1.2 查看 Conda 版本1.3 查看 cuDNN 版本1.4 总结 2. 安装cudnn2.1 安装cudnn步骤2.2 cuDNN无需登录官方下载链接 1. 查看信息 查看Conda 路径、C…...

企业AI编程效率提升:2026最新权威AI编程工具必看

企业AI编程效率提升&#xff1a;2026最新权威AI编程工具必看开篇“企业研发团队效率低下&#xff0c;核心项目交付周期长&#xff0c;如何通过AI编程工具缩短开发周期、提升ROI&#xff1f;”“企业部署AI编程工具&#xff0c;如何兼顾安全合规、代码质量与开发效率&#xff0c…...

2025年AI数字人行业现状:全国超99万家企业涌入,真正能落地的不到一成

当生成式AI的浪潮席卷各行各业&#xff0c;AI数字人成为最先跑出商业化落地速度的细分赛道。然而&#xff0c;在全国超99万家相关企业蜂拥而入的热闹背后&#xff0c;一个残酷的现实正在显现&#xff1a;绝大多数所谓的"AI数字人"不过是披着科技外衣的"会动的照…...

用Python和OpenCV实现人脸微调:从仿射变换到TPS薄板样条实战

PythonOpenCV人脸微调实战&#xff1a;从仿射变换到TPS薄板样条全解析 当我们需要将一张人脸自然地调整到另一张人脸的形状时&#xff0c;传统仿射变换的局限性就会暴露无遗。本文将从实际应用出发&#xff0c;带你深入理解TPS&#xff08;Thin Plate Spline&#xff09;薄板样…...

python入门教程(非常详细),python和c++哪个更值得学

python入门教程(非常详细),python和c哪个更值得学 这篇文章主要介绍了python入门教程(非常详细)&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 python 怎么读 python&…...

Taotoken官方折扣活动如何帮助开发者降低大模型使用门槛

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken官方折扣活动如何帮助开发者降低大模型使用门槛 对于个人开发者和学生群体而言&#xff0c;探索和应用大模型技术时&#…...

【健身SaaS厂商紧急预警】:AI Agent接入后用户留存率提升41%的关键3个埋点逻辑

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;AI Agent健身行业应用的范式迁移与价值重定义 传统健身服务长期受限于人力密度、响应延迟与个性化瓶颈&#xff0c;而AI Agent的深度介入正推动行业从“标准化课程交付”跃迁至“持续演化的健康共生体”。这一…...

3个步骤掌握OBS多平台推流插件:告别重复操作,实现一键多平台直播同步

3个步骤掌握OBS多平台推流插件&#xff1a;告别重复操作&#xff0c;实现一键多平台直播同步 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp OBS多平台推流插件&#xff08;obs-multi-r…...

第七章 指令微调学习(五)Extracting and saving responses

第七章 指令微调学习&#xff08;五&#xff09; 7.7 Extracting and saving responses 在对指令数据集的训练部分完成LLM的微调后&#xff0c;现在评估其在保留测试集上的性能。首先&#xff0c;我们提取测试集中每个输入对应的模型生成响应并进行人工分析&#xff1b;随后通过…...

杰理之蓝牙测试盒升级无法维持IO【篇】

蓝牙测试盒升级按如下修改即可维持IO。&#xff08;le_audio同样适用&#xff09;...

Hermes Agent 自定义供应商配置指向 Taotoken 的步骤

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Hermes Agent 自定义供应商配置指向 Taotoken 的步骤 对于使用 Hermes Agent 进行 AI 应用开发的团队而言&#xff0c;统一管理模型…...