动态规划:2304. 网格中的最小路径代价

2304. 网格中的最小路径代价

给你一个下标从 0 开始的整数矩阵 grid ,矩阵大小为 m x n ,由从 0 到 m * n - 1 的不同整数组成。你可以在此矩阵中,从一个单元格移动到 下一行 的任何其他单元格。如果你位于单元格 (x, y) ,且满足 x < m - 1 ,你可以移动到 (x + 1, 0)(x + 1, 1), ..., (x + 1, n - 1) 中的任何一个单元格。注意: 在最后一行中的单元格不能触发移动。

每次可能的移动都需要付出对应的代价,代价用一个下标从 0 开始的二维数组 moveCost 表示,该数组大小为 (m * n) x n ,其中 moveCost[i][j] 是从值为 i 的单元格移动到下一行第 j 列单元格的代价。从 grid 最后一行的单元格移动的代价可以忽略。

grid 一条路径的代价是:所有路径经过的单元格的 值之和 加上 所有移动的 代价之和 。从 第一行 任意单元格出发,返回到达 最后一行 任意单元格的最小路径代价

dp[i][j] 已经表示到i行j列的最小代价。

i,j的位置可以从i-1,k转移而来,所以可以得到状态转移方程:

初始条件:dp[0][j] = grid[0][j]

转移方程:dp[i][j] = min(dp[i-1][k]) + moveCost[grid[i-1][k]][j]+grid[i][j];

结果:res = min dp[m-1][j]

class Solution {
public:int minPathCost(vector<vector<int>>& grid, vector<vector<int>>& moveCost) {// dp[i][j] 已经表示到i行j列的最小代价// res = min dp[m-1][j]  // dp[0][j] = grid[0][j]// dp[i][j] = min(dp[i-1][k]) + moveCost[grid[i-1][k]][j]+grid[i][j];int m = grid.size();int n = grid[0].size();vector<vector<int>>dp(m,vector<int>(n,1000000));for(int i = 0;i<n;i++){dp[0][i] = grid[0][i];}int res=0x3f3f3f3f;for(int i=1;i<m;i++){for(int j=0;j<n;j++){for(int k=0;k<n;k++){dp[i][j]=min(dp[i][j],dp[i-1][k]+moveCost[grid[i-1][k]][j]+grid[i][j]);}}}for(int i=0;i<n;i++){res=min(res,dp[m-1][i]);}return res;}
};

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

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

相关文章

网络安全之渗透测试入门准备

渗透测试入门所需知识 操作系统基础&#xff1a;Windows&#xff0c;Linux 网络基础&#xff1a;基础协议与简单原理 编程语言&#xff1a;PHP&#xff0c;python web安全基础 渗透测试入门 渗透测试学习&#xff1a; 1.工具环境准备&#xff1a;①VMware安装及使用&#xff1b…

JAVA SQL

-- /* */ -- 简单查询: -- 查询所有字段: select * from 表名 -- *:通配符,代表所有 select * from employees -- 查询部分字段: select 列名1,列名2,.. from 表名 -- 查询员工ID,员工姓名,员工的工资 select employee_id,salary,first_name from employees -- 查…

花木兰从军

《花木兰从军》 作家&#xff0f;罗光记 在遥远的古代&#xff0c;有一位英勇的女子&#xff0c;名叫花木兰。她以一介女子的柔弱之躯&#xff0c;披挂上阵&#xff0c;驰骋沙场&#xff0c;成为了那个时代最为传奇的英雄。 花木兰出生在一个普通的农家&#xff0c;从小便被…

云原生Docker系列 | docker-compose自动编排使用

云原生Docker系列 | docker-compose自动编排使用 1. yaml文件格式要求2. 使用docker compose搭建博客3. docker compose 命令总结1. yaml文件格式要求 yaml是以空格缩进来控制层级关系,不能使用Tab键,而且大小写敏感的。参数要遵循驼峰写法如:imagePullPolicy    yaml缩进…

BUUCTF--[ACTF2020 新生赛]Include

目录 1、本题详解 2、延伸拓展 1、本题详解 访问题目链接 有一个tips的链接&#xff0c;我们点击 请求了file&#xff0c;内容是flag.php的内容&#xff1a;Can you find out the flag? 尝试请求一下index.php 并没有发现什么信息 flag.php也没发现什么 尝试爆破一下它的…

java游戏制作-飞翔的鸟游戏

一.准备工作 首先创建一个新的Java项目命名为“飞翔的鸟”&#xff0c;并在src中创建一个包命名为“com.qiku.bird"&#xff0c;在这个包内分别创建4个类命名为“Bird”、“BirdGame”、“Column”、“Ground”&#xff0c;并向需要的图片素材导入到包内。 二.代码呈现 …

Android线程优化——整体思路与方法

**在日常开发APP的过程中&#xff0c;难免需要使用第二方库和第三方库来帮助开发者快速实现一些功能&#xff0c;提高开发效率。但是&#xff0c;这些库也可能会给线程带来一定的压力&#xff0c;主要表现在以下几个方面&#xff1a; 线程数量增多&#xff1a;一些库可能会在后…

AIGC 是通向 AGI 的那条路吗?

AIGC 是通向 AGI 的那条路吗&#xff1f; 目录 一、背景知识 1.1、AGI&#xff08;人工通用智能&#xff09; 1.1.1、概念定义 1.1.2、通用人工智能特质 1.1.3、通用人工智能需要掌握能力 1.2、AIGC 二、AIGC 是通向 AGI 的那条路吗&#xff1f; 三、当前实现真正的 A…

window下查看端口是否被占用

window下查看端口是否被占用 1、开始---->运行---->cmd&#xff0c;或者是windowR组合键&#xff0c;调出命令窗口&#xff1b; 2、输入命令&#xff1a;netstat -ano&#xff0c;列出所有端口的情况。在列表中我们观察被占用的端口&#xff0c;比如是49157&#xff0c…

10.26~10.27论文,ALP: AdaptiveLossless floating-Point Compression

ALP使用自适应编码&#xff0c;加强版的伪小数去编码双进度小数作为整数&#xff0c;如果它们产生于小数&#xff0c;否则就用矢量化压缩小数的前位。它的高速来源于在标量编码的实现&#xff0c;自动矢量化&#xff0c;使用他们FastLanes的库&#xff0c;一个高效的二阶段压缩…

【云原生】初识 Service Mesh

目录 一、什么是Service Mesh 二、微服务发展历程 2.1 微服务架构演进历史 2.1.1 单体架构 2.1.2 SOA阶段 2.1.3 微服务阶段 2.2 微服务治理中的问题 2.2.1 技术栈庞杂 2.2.2 版本升级碎片化 2.2.3 侵入性强 2.2.4 中间件多&#xff0c;学习成本高 2.2.5 服务治理功…

年报类型页面动画

一. 动画分析 年报类型页面的动画都是第一行字体先触发动画 之后第二行字体再出现动画 以此类推 二. 动画写法 1.动画封装 keyframes identifier {0% {opacity: 0;transform: translateY(40px);}100% {opacity: 1;transform: translateY(0);} } 2. 添加动画 a. 第一行字…

导购APP与淘客查券返利机器人的对比:深刻揭露行业本质

导购APP与淘客查券返利机器人的对比&#xff1a;深刻揭露行业本质 随着互联网的快速发展&#xff0c;购物方式也发生了翻天覆地的变化。导购APP和淘客机器人成为了消费者购物时的两种常见工具。然而&#xff0c;在这两者之间&#xff0c;究竟该如何选择呢&#xff1f;本文将通…

知虾数据软件:电商人必备知虾数据软件,轻松掌握市场趋势

在当今数字化时代&#xff0c;数据已经成为了企业决策的重要依据。对于电商行业来说&#xff0c;数据更是至关重要。如果你想在电商领域中脱颖而出&#xff0c;那么你需要一款强大的数据分析工具来帮助你更好地了解市场、分析竞争对手、优化运营策略。而知虾数据软件就是这样一…

【React-Router】导航传参

1. searchParams 传参 // /page/Login/index.js import { Link, useNavigate } from react-router-dom const Login () > {const navigate useNavigate()return <div>登录页<button onClick{() > navigate(/article?id91&namejk)}>searchParams 传参…

opencv 没办法控制焦距怎么办?来试一下 pyuvc 吧

大部分时候&#xff0c;我们都是通过 opencv 来读取 usb 摄像头的帧图像的。几乎所有的 usb 摄像头是可以进行自动对焦的&#xff0c;除非它是定焦的。当我们想要通过代码来控制摄像头的焦距的时候&#xff0c;会发现&#xff0c;有很多时候 opencv 的 API 没有办法进行有效的控…

SpringBoot中使用注解的方式创建队列和交换机

SpringBoot中使用注解的方式创建队列和交换机 前言 最开始蘑菇博客在进行初始化配置的时候&#xff0c;需要手动的创建交换机&#xff0c;创建队列&#xff0c;然后绑定交换机&#xff0c;这个步骤是非常繁琐的&#xff0c;而且一不小心的话&#xff0c;还可能就出了错误&…

嵌入式设备视频编码比较:H.264、H.265、MPEG-2和MJPG

在嵌入式设备领域&#xff0c;视频编码是一项关键技术&#xff0c;它能够将高清视频压缩为更小的数据量&#xff0c;以实现高效的存储和传输。本文将对四种常见的视频编码标准进行详细比较&#xff0c;包括H.264&#xff08;AVC&#xff09;、H.265&#xff08;HEVC&#xff09…

phpinfo中的重要信息

phpinfo中的重要信息 1.PHP/操作系统版本信息2.Configuration File(ini配置文件位置)3.Registered PHP Streams(支持的流)4.Registered Stream Filters(支持的流过滤器)5.allow_url_fopen&allow_url_include6.disable_functions7.display_errors8.include_path9.open_based…