下降路径最⼩和(medium)

题目描述:

给你一个 n x n方形 整数数组 matrix ,请你找出并返回通过 matrix下降路径最小和

下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置 (row, col) 的下一个元素应当是 (row + 1, col - 1)(row + 1, col) 或者 (row + 1, col + 1)

示例 1:

复制代码
输入:matrix = [[2,1,3],[6,5,4],[7,8,9]]
输出:13
解释:如图所示,为和最小的两条下降路径

示例 2:

复制代码
输入:matrix = [[-19,57],[-40,-5]]
输出:-59
解释:如图所示,为和最小的下降路径

提示:

  • n == matrix.length == matrix[i].length
  • 1 <= n <= 100
  • -100 <= matrix[i][j] <= 100

题目解析:我们来简单理解一下题意,给你一个二维整数数组,请你找出并返回通过这个整数数组的下降路径的最小和。什么意思呢?从这个二维矩阵的任意一点作为起点,开始向下走,直到走到最后一行。分析示例1,可以从1位置出发,走到5位置,最后沿着左斜对角位置走到7位置,也可以从1位置出发,沿着右斜对角线走到4位置,在沿着左斜对角线走到8位置,返回它们的最小值。

算法解析:

状态表示:(经验+题目要求)经验:以某一个位置为结尾,dp[i][j]表示:到达[i,j]位置时最小的下降路径。

状态转移方程:(根据最近一步划分问题)分情况讨论:1.从[i-1,j-1]到[i,j]位置-->dp[i-1][j-chu1]+m[i][j];2.从[i-1,j]到[i,j]位置-->dp[i-1][j]+m[i][j];3.从[i-1,j+1]到[i,j]-->dp[i-1,j+1]+m[i][j];综上所述,dp[i][j]-min(x,y,z)+m[i][j](x,y,z分别代表上述在不同情况下推导出来的状态转移方程);

初始化:(处理越界访问情况)策略:多加一行多加两列。(注意:里面的值要保证后面的填表时正确的;下标的映射)。

填表顺序:从上往下

返回值:最后一行dp表里面的最小值。

代码:

cpp 复制代码
class Solution {
	int jiuephferui(vector<vector<int>>& num) {
		int n = num.size();
		vector<vector<int>> dp(n + 1, vector<int>(n + 2,INT_MAX));
		for (int j = 0; j < n + 2; ++j) {
			dp[0][j] = 0;
		}
		
		for (int i = 1; i <= n; ++i) {
			for (int j = 1; j <= n; ++j) {
				dp[i][j] = min(dp[i - 1][j - 1], min(dp[i - 1][j], dp[i - 1][j - 1])) + num[i - 1][j - 1];
			}
			
		} 
		int ret = INT_MAX;
		for (int j = 1; j <= n; ++j) ret = min(ret, dp[n][j]);
		return ret;
	}
};
相关推荐
一匹电信狗5 小时前
【LeetCode_547_990】并查集的应用——省份数量 + 等式方程的可满足性
c++·算法·leetcode·职场和发展·stl
鱼跃鹰飞6 小时前
Leetcode会员尊享100题:270.最接近的二叉树值
数据结构·算法·leetcode
Queenie_Charlie6 小时前
小陶的疑惑2
数据结构·c++·树状数组
梵刹古音7 小时前
【C语言】 函数基础与定义
c语言·开发语言·算法
筵陌7 小时前
算法:模拟
算法
Queenie_Charlie7 小时前
小陶与杠铃片
数据结构·c++·树状数组
We་ct7 小时前
LeetCode 205. 同构字符串:解题思路+代码优化全解析
前端·算法·leetcode·typescript
renhongxia18 小时前
AI算法实战:逻辑回归在风控场景中的应用
人工智能·深度学习·算法·机器学习·信息可视化·语言模型·逻辑回归
CoderCodingNo8 小时前
【GESP】C++四级/五级练习题 luogu-P1223 排队接水
开发语言·c++·算法
民乐团扒谱机8 小时前
【AI笔记】精密光时频传递技术核心内容总结
人工智能·算法·光学频率梳