三角形最小路径和(二)

模型讲解

该模型即为「线性 DP」基础模型之一:数字三角形,即最常见的二维坐标系「DP 模型」。

考虑到「线性 DP」中 DP 状态沿着各个维度线性增长的这一特点,以及本题所求的从上到下的最小路径和,不难得出状态f[i][j] 表示从顶点出发到达第 行第 列这个点时的最小路径和。

该模型的重要意义在于告诉了我们二维坐标系中也是可以进行「线性 DP」的,而且我们可以直接根据坐标点设置「DP 状态」。

C++ 代码实现

复制代码
class Solution {
public:
    int minimumTotal(vector<vector<int>>& triangle) {
        int n = triangle.size(), ans = 1e9;
        vector<vector<int> > f(n+1, vector<int>(n+1, 0));
        for(int i = 0; i < n; i++) {
            for(int j = 0; j < triangle[i].size(); j++) {
                if(j == triangle[i].size()-1)
                    f[i+1][j+1] = triangle[i][j] + f[i][j];
                else if(j == 0)
                    f[i+1][j+1] = triangle[i][j] + f[i][j+1];
                else
                    f[i+1][j+1] = triangle[i][j] + min(f[i][j+1], f[i][j]);
                if(i == n-1)
                    ans = min(ans, f[i+1][j+1]);
            }
        }
        return ans;
    }
};
相关推荐
勤劳的进取家4 分钟前
数据链路层基础
网络·学习·算法
Advancer-21 分钟前
第二次蓝桥杯总结(上)
java·算法·职场和发展·蓝桥杯
ん贤1 小时前
加密算法(对称、非对称、哈希、签名...)
算法·哈希算法
superior tigre1 小时前
78 子集
算法·leetcode·深度优先·回溯
天威?*1 小时前
bitset的数据结构用法
算法·动态规划
hoiii1872 小时前
粒子滤波跟踪系统 - 蒙特卡洛方法实现
算法
weisian1513 小时前
Java并发编程--47-分布式ID生成器:雪花算法(Snowflake)与时钟回拨问题
java·算法·时钟回拨·雪花算法id
itzixiao3 小时前
L1-066 猫是液体(5分)[java][python]
java·开发语言·python·算法
ytttr8733 小时前
MATLAB SIFT图像配准实现
算法·机器学习·matlab
小饕3 小时前
从 Word2Vec 到多模态:词嵌入技术的演进全景
人工智能·算法·机器学习