92、动态规划-最小路径和

思路:

还是一样,先使用递归来接,无非是向右和向下,然后得到两种方式进行比较,代码如下:

 public int minPathSum(int[][] grid) {return calculate(grid, 0, 0);}private int calculate(int[][] grid, int i, int j) {int m = grid.length;int n = grid[0].length;// 到达右下角if (i == m - 1 && j == n - 1) {return grid[i][j];}// 向下移动int down = Integer.MAX_VALUE;if (i < m - 1) {down = calculate(grid, i + 1, j);}// 向右移动int right = Integer.MAX_VALUE;if (j < n - 1) {right = calculate(grid, i, j + 1);}// 返回当前位置的值加上从当前位置向下或向右走的最小值return grid[i][j] + Math.min(down, right);}

然后依据此来改动态规划:

使用动态规划(DP)解决问题是处理此类网格路径问题的更有效方法。在这种情况下,我们会创建一个与原网格同样大小的 dp 数组,其中 dp[i][j] 表示从左上角到位置 (i, j) 的最小路径和。

动态规划的思路:

  1. 状态定义:定义 dp[i][j] 为从起点 (0, 0) 到点 (i, j) 的最小路径和。
  2. 初始化
    • dp[0][0] 应初始化为 grid[0][0],因为它是起始点。
    • 第一行和第一列的每个点都只能从它左边或上边的点到达,因此可以直接累加。
  3. 状态转移方程
    • 对于网格中的每个点 (i, j)dp[i][j] 可以从上方 (i-1, j) 或左方 (i, j-1) 到达,因此 dp[i][j] 应为 grid[i][j] + min(dp[i-1][j], dp[i][j-1])
  4. 计算顺序:从左到右,从上到下依次计算。

代码如下:

public int minPathSum(int[][] grid) {int m = grid.length;int n = grid[0].length;int[][] dp = new int[m][n];// 初始化起点dp[0][0] = grid[0][0];// 初始化第一列for (int i = 1; i < m; i++) {dp[i][0] = dp[i - 1][0] + grid[i][0];}// 初始化第一行for (int j = 1; j < n; j++) {dp[0][j] = dp[0][j - 1] + grid[0][j];}// 填充剩余的dp表for (int i = 1; i < m; i++) {for (int j = 1; j < n; j++) {dp[i][j] = Math.min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];}}// 返回右下角的值return dp[m - 1][n - 1];}

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

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

相关文章

射频无源器件之巴伦

一. 巴伦的作用 Balun,balanced-unbalanced的缩写,即平衡-不平衡转换器,是一种三端口无源器件,其本质是通过电感线圈的相互耦合实现的信号转换。用于平衡信号(差分信号,即振幅相等、相位相差180 的两个信号)与非平衡信号(单端信号)的相互转换。 Balun是高频电路重要器…

Scala 类和对象

类是对象的抽象&#xff0c;而对象是类的具体实例。类是抽象的&#xff0c;不占用内存&#xff0c;而对象是具体的&#xff0c;占用存储空间。类是用于创建对象的蓝图&#xff0c;它是一个定义包括在特定类型的对象中的方法和变量的软件模板。 我们可以使用 new 关键字来创建类…

Vmware虚拟机瘦身及Samba服务不可用问题解决

虚拟机磁盘空间膨胀是一个令人头疼的问题&#xff0c;特别是对许多搞开发的小伙伴。无论是做后台服务、嵌入式还是Android开发&#xff0c;都面临着这个难题。首先&#xff0c;操作系统本身就已占用不少空间&#xff0c;更新安装包&#xff0c;再下载一些开源软件&#xff0c;剩…

运行Spring Boot项目失败?显示java: 无法访问org.springframework.boot.SpringApplication,让我来看看~

idea项目运行报错截图&#xff1a; &#xff08;1&#xff09;查看错误提示“类文件具有错误的版本 61.0, 应为 52.0”&#xff0c;61.0对应的是jdk17&#xff0c;52.0对应1.8。 通过这个网址可以查询版本&#xff1a; https://stackoverflow.com/questions/9170832/list-of-ja…

14-串口通讯

串口通信简介 串口通信&#xff0c;设备间常用的串行通讯方式&#xff0c;简单便捷&#xff0c;大部分设备都支持。 本人使用的开发板默认使用串口终端。windows上使用串口通讯工具来来接开发板&#xff0c;如putty&#xff0c;xShell&#xff0c;MobaXterm等等。 使用工具时…

网络编程入门之UDP编程

欢迎各位帅哥美女来捧场&#xff0c;本文是介绍UDP网络编程。在这里&#xff0c;你会见到最详细的教程&#xff1b;细致到每一行代码&#xff0c;每一个api的由来和使用它的目的等。 目录 1.UDP相关API 1.1.两个类 1.2.两个类中的方法 2.UDP编程 2.1.大体框架 2.2.内容构…

【项目学习01_2024.05.08_Day06】

学习笔记 5 新增课程5.1 需求分析5.1.1 业务流程5.1.2 数据模型 5.2 接口定义5.3 接口开发5.3.1 保存课程基本信息5.3.2 保存营销信息 5.4 接口测试 5 新增课程 5.1 需求分析 5.1.1 业务流程 5.1.2 数据模型 5.2 接口定义 5.3 接口开发 根据需求分析&#xff0c;新增课程表…

MIMO和RIS的一些学习

1.Accurate Beam Training for RIS-Assisted Wideband Terahertz Communication&#xff08;RIS 辅助宽带太赫兹通信的精确波束训练&#xff09; 摘要&#xff1a;太赫兹 (THz) 通信被广泛认为是未来 6G 无线系统最有前途的技术之一。为了应对太赫兹系统中的高路径损耗&#x…

【智能楼宇秘籍】一网关多协议无缝对接BACnet+OPC+MQTT

在繁华的都市中心&#xff0c;一座崭新的大型商业综合体拔地而起&#xff0c;集购物、餐饮、娱乐、办公于一体&#xff0c;是现代城市生活的缩影。然而&#xff0c;这座综合体的幕后英雄——一套高度集成的楼宇自动化系统&#xff0c;正是依靠多功能协议网关&#xff0c;实现了…

韩国站群服务器提供高级安全防护以确保数据和网站的安全性

韩国站群服务器提供高级安全防护以确保数据和网站的安全性 在当今数字化时代&#xff0c;网站的安全性和数据保护已成为企业和个人不可忽视的重要议题。韩国站群服务器作为一个拥有发达科技和互联网基础设施的国家&#xff0c;通过提供高级安全防护措施&#xff0c;为用户的数…

多态的用法

场景&#xff1a; 目前的一个功能F在一个平台a配置下是Fa()。 void C(Config c){ PreF(); if(c is a){ Fa(); } PostF(); } 现在要添加对另一个平台b的配置。 现在最直接的办法是修改F的调用代码C。 void C(Config a){ PreF(); if(c is a) { Fa(); } else if(c is b) { …

GPU系列(四)-常用 GPU 运维及故障处理

1 XID 错误事件 XID 是 NVIDIA 的错误码&#xff0c;可以通过命令: dmesg -T | grep -i "NVRM: Xid" 根据 XID 可以定位故障&#xff0c;下面是一些常见的 XID 事件&#xff1a; XID说明13Graphics Engine Exception。通常是数组越界、指令错误,小概率是硬件问题…

Web服务器和Tomcat

Web介绍 对于http协议操作进行封装、简化web程序开发 部署web项目&#xff0c;对外提供上网信息浏览 Tomcat介绍 一个轻量级的web服务器 也称为web容器 Tomcat的文件夹介绍 下载地址&#xff1a;Apache Tomcat - Apache Tomcat 9 Software Downloads 安装&#xff1a;直…

十个数据安全最佳实践:保护数据的简单方法

在德迅云安全将介绍数据安全的主要原则&#xff0c;并了解适用于大多数行业的 10 种数据安全最佳实践&#xff0c;以及云端安全检测的重要性。 数据威胁和维护数据安全的好处 什么是数据安全&#xff1f; 数据安全是旨在保护组织敏感资产的流程和工具的组合。有价值的数据在…

计算方法实验2(补充):列主元消元法解线性方程组

C源代码 #include<bits/stdc.h> using namespace std;// 列主元消去法求解线性方程组 vector<long double> Column_Elimination(vector<vector<long double>> A, vector<long double> b);int main() {vector<vector<long double>> …

梯度下降及其可视化

目录 一、算法思想 二、算法思路 三、算法实现 四、代码实现 一、算法思想 梯度下降算法是一种优化算法&#xff0c;用于寻找函数的局部最小值。其基本思想是通过迭代的方式&#xff0c;逐步调整参数&#xff0c;使得函数的输出值减小。以下是梯度下降算法的主要思想&…

JavaScript快速入门系列-1(JavaScript简介)

第一章:JavaScript简介 1. JavaScript简介1.1 什么是JavaScript1.2 JavaScript的历史与应用1.3 环境搭建:浏览器与Node.js2. JavaScript语言基础2.1 变量声明:let, const, var2.2 数据类型:字符串、数字、布尔值、对象、数组、null与undefined2.3 运算符:算术、比较、逻辑…

将图像特征和CSV中的特征保存到h5文件中

这个脚本的任务是&#xff1a;从mask中提取最大的ROI&#xff0c;然后映射到DCE原图中&#xff0c;获取原图最大ROI的上一层及下一层&#xff0c;共三层。然后去除掉周围的0像素&#xff0c;再利用双线性插值到224*224大小的图像。再映射到T2序列的原图中&#xff0c;得到224*2…

二叉树的前序、中序、后序遍历的C++实现

二叉树的前序、中序、后序 遍历属于深度优先搜索方式&#xff0c;本文使用递归法实现前序、中序、后序的遍历方法&#xff0c;代码如下&#xff1a; #include <iostream> #include <vector>struct TreeNode{int val;TreeNode* left;TreeNode* right;TreeNode(int …

初识C++ · 模板初阶

目录 1 泛型编程 2 函数模板 3 类模板 1 泛型编程 模板是泛型编程的基础&#xff0c;泛型我们碰到过多次了&#xff0c;比如malloc函数返回的就是泛型指针&#xff0c;需要我们强转。 既然是泛型编程&#xff0c;也就是说我们可以通过一个样例来解决类似的问题&#xff0c…