最小路径和

1 题目描述
给出一个包含非负整数的m×n矩阵,从左上角出发至右下角,每次只能向右或者向下移动一步,找出数字之和最小的路径。
输入:matrix = [[1,2,7],[2,5,3],[1,1,1]],如图2-3所示。
1  2  7
2  5  3
1  1  1
输出:6。
解释:路径1→2→1→1→1的总和最小。
2 题目解析
(1)定义问题状态:定义一个m×n二维数组dp[][],dp[i][j]代表从左上角出发到(i,j)位置的最小路径和。
(2)定义初始条件:dp[0][0] = matrix [0][0]。
(3)确定转移方程:根据题意,每次只能向右或者向下移动一步,可确定状态转移方程:
● 当j = 0时,dp[i][0] = dp[i-1][0] + matrix[i][0]。
● 当i = 0时,dp[0][j] = dp[0][j-1] + matrix[0][j]。
● 当i > 0 且 j > 0时,dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + matrix[i][j]。
最终,dp[m-1][n-1]就是待求结果。
3、代码实现
public class MinPathSum {public static void main(String[] args) {int[][] matrix = {{1, 2, 7}, {2, 5, 3}, {1, 1, 1}};System.out.println(minPathSum(matrix));}public static int minPathSum(int[][] matrix) {int row = matrix.length; // 行数int col = matrix[0].length; // 列数int[][] dp = new int[row][col];dp[0][0] = matrix[0][0];// 先初始化dp第一行for (int i = 1; i < row; i++) {dp[i][0] = matrix[i][0] + dp[i - 1][0];}// 初始化dp第一列for (int j = 1; j < col; j++) {dp[0][j] = matrix[0][j] + dp[0][j - 1];}// 计算dp[i][j],i和j从1开始for (int i = 1; i < row; i++) {for (int j = 1; j < col; j++) {dp[i][j] = matrix[i][j] + Math.min(dp[i - 1][j], dp[i][j -1]);}}return dp[row - 1][col - 1];}
}

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

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

相关文章

Hadoop——Yarn基础架构

Hadoop——Yarn基础架构 Hadoop YARN&#xff08;Yet Another Resource Negotiator&#xff09;是Apache Hadoop生态系统中的一个子项目&#xff0c;它是用于集群资源管理的框架&#xff0c;负责为运算程序提供服务器运算资源&#xff0c;相当于一个分布式的操作系统平台&…

Postman 工具发送请求的技巧与实践

在开发和测试 API 时&#xff0c;发送 JSON 格式的请求是一个常见需求。 在 Postman 中构建和发送 JSON 请求 创建一个新的请求 首先&#xff0c;在 Postman 启动界面上找到并点击 “New” 按钮&#xff0c;选择 “HTTP Request” 来开始新建一个请求。这一步骤允许你定义请…

指针学习总结

当指针本身定义的类型不同十&#xff0c;指向的一次性取值长度也不同 数组元素的指针 数组存放字符串 数组存放字符串时存放在栈区&#xff0c;sizeof(str1) 128字节 字符指针指向字符串 str2此时存放的是h的地址&#xff0c;因此sizeof(str2) 4字节或者8字节 并且文字常量…

递归算法/斐波那契数列

目录 递归 直接递归 间接递归 思想沿用 斐波那契数列 图片来源网络&#xff0c;侵权联系可删 递归 递归&#xff08;Recursion&#xff09;是一种编程技术&#xff0c;其中函数或方法直接或间接地调用自身。递归通常用于解决可以分解为更小、更简单的子问题的问题。递归的…

一文速览Llama 3及其微调:如何通过paper-review数据集微调Llama3 8B

前言 4.19日凌晨正准备睡觉时&#xff0c;突然审稿项目组的文弱同学说&#xff1a;Meta发布Llama 3系列大语言模型了 一查&#xff0c;还真是 本文以大模型开发者的视角&#xff0c;基于Meta官方博客的介绍&#xff1a;Introducing Meta Llama 3: The most capable openly a…

linux 系统文件目录颜色及特殊权限对应的颜色

什么决定文件目录的颜色和背景&#xff1f; 颜色 说明 栗子 权限白色表示普通文件 蓝色表示目录 绿色表示可执行文件 浅蓝色链接文件 黄色表示设备文件 红色 表示压缩文件 红色闪烁表示链接的文件有问题 灰色 表示其它文件 可以用字符表示文件的类型&am…

MATLAB初学者入门(9)—— 线性回归

线性回归是一种统计方法&#xff0c;用于建立一个或多个自变量&#xff08;解释变量&#xff09;和因变量之间的关系模型。在MATLAB中&#xff0c;可以使用多种方法来实现线性回归&#xff0c;包括使用内置函数如fitlm、regress或直接使用矩阵运算来求解。以下是一些详细的案例…

Netty快速入门

网络通信模型 在了解Netty之前&#xff0c;我们可以简单的先了解一下我们的网络通信方式&#xff0c;正所谓知其然&#xff0c;知其所以然。只有了解了网络通信模型&#xff0c;我们才能更好的去理解Netty的一些核心的原理。 如下图是一个简单的请求发送的时候的一个大概的HTT…

【Linux】GDB调试器学起来!指令全解,建议收藏

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

面试十五 容器

一、vector容器 template<typename T> class Allocator{ public:T* allocator(size_t size){// 负责内存开辟return (T*)malloc(sizeof(T) * size);}void deallocate(void * p){free(p);}void construct(T*p,const T&val){// 定位newnew (p) T(val);}void destroy(…

访问控制列表配置实验

ACL&#xff0c;全称 Access Control List&#xff08;访问控制列表&#xff09;&#xff0c;是一种实现访问控制的机制&#xff0c;用于规定哪些主体&#xff08;如用户、设备、IP地址、进程等&#xff09;可以对哪些资源&#xff08;如网络服务、文件、系统对象等&#xff09…

2024深圳杯C题的8页思路分析+所有代码可执行+参考文献+持续更新参考论文(已经更新了代码与图像)

比赛题目的完整版思路可执行代码数据参考论文都会在第一时间更新上传的&#xff0c;大家可以参考我往期的资料&#xff0c;所有的资料数据以及到最后更新的参考论文都是一次付费后续免费的。注意&#xff1a;&#xff08;建议先下单占坑&#xff0c;因为随着后续我们更新资料数…

C#面:简述 数组、链表、哈希、队列、栈数据结构特点,各自优点和缺点

C# 数组、链表、哈希、队列和栈是常见的数据结构&#xff0c;它们各自有不同的特点、优点和缺点。 数组&#xff1a; 特点&#xff1a;数组是一种线性数据结构&#xff0c;它由一组相同类型的元素组成&#xff0c;这些元素在内存中是连续存储的。优点&#xff1a;数组具有快速…

代码随想录-算法训练营day23【二叉树09:修剪二叉搜索树、将有序数组转换为二叉搜索树、把二叉搜索树转换为累加树】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第六章 二叉树part09今日内容&#xff1a;● 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树 ● 总结篇 详细布置 669. 修剪二叉搜索树 这道题目比较难&#xff0c;比 添…

docker入门学习

一、docker概念 Docker 引擎是使用的是Linux内核特性的容器引擎。 二、docker的安装 1.docker&#xff0c;下载地址&#xff1a; 桌面版&#xff1a;Docker Desktop: The #1 Containerization Tool for Developers | Docker 服务器版&#xff1a;Install Docker Engine | D…

C++ 一种交换两个数的思路

在 Lua 或者 Python 中可以使用多值赋值语句来交换两个数。例如&#xff1a;a, b b, a。在 C 中有没有类似的操作&#xff1f; 先解析一下多值赋值的原理&#xff0c;a, b b, a 等价于 t1, t2 b, a a, b t1, t2可以看到多值赋值还是用到了中间变量&#xff0c;而且还是两…

# 从浅入深 学习 SpringCloud 微服务架构(六)Feign(3)

从浅入深 学习 SpringCloud 微服务架构&#xff08;六&#xff09;Feign&#xff08;3&#xff09; 一、组件的使用方式总结 1、注册中心 1&#xff09; Eureka 搭建注册中心 引入依赖 spring-cloud-starter-netflix-eureka-server。 配置 EurekaServer。 通过 EnableEure…

前端路由的实现原理

当谈到前端路由时&#xff0c;指的是在前端应用中管理页面导航和URL的机制。前端路由使得单页应用&#xff08;Single-Page Application&#xff0c;SPA&#xff09;能够在用户与应用交互时动态地加载不同的视图&#xff0c;而无需每次都重新加载整个页面。 在前端开发中&…

如何在阿里云快速配置自动定时重启ECS云服务器?

背景 无论是电子商务、在线教育、游戏&#xff0c;还是流媒体等业务&#xff0c;服务器的稳定运行都是至关重要的。然而&#xff0c;在实际运行中&#xff0c;我们可能会遇到这样一些场景&#xff1a; 系统更新&#xff1a;一些操作系统或者软件的更新可能需要重启服务器才能…

PCA9685芯片手册学习求教

概述 项目使用树莓派和PCA9685模块连接舵机进行控制&#xff0c;参照pca9685模块手册写了驱动代码&#xff0c;能按照预期进行控制舵机。 记录一下后续回看。 %PCA9685 此处提供此类的摘要% 初始化输入参数&#xff1a;芯片地址默认&#xff08;0x40),输出通道(ch),输出频率…