leetcode 120 Triangle

想了很久 没有想到很好的方法 后来看见评论里有一个方法很好 我研究了一下 发现挺巧妙地 所以发上来 以备以后看

class Solution {
public:
    int minimumTotal(vector>& triangle) {
        vector> dp(triangle.size(), vector(triangle.size(), 0)); //初始化一个宽为riangle.size()(这个是上式的第二个) 高为riangle.size()的矩阵(上式的第一个)
        for(int i = 0; i <= triangle.size() - 1; i++){
            dp[triangle.size() - 1][i] = triangle[triangle.size() - 1][i];
        }//将原三角矩阵中的最后一行赋值给 新的dp矩阵的最后一行
        for(int i = triangle.size() - 2; i >= 0; i--){
            for(int j = 0; j <= i; j++){
                dp[i][j] = min(dp[i+1][j], dp[i+1][j+1]) + triangle[i][j];//这里是核心代码 建议画出来理解下
            }
        }
        return dp[0][0];
    }
};

你可能感兴趣的:(leetcode 120 Triangle)