想了很久 没有想到很好的方法 后来看见评论里有一个方法很好 我研究了一下 发现挺巧妙地 所以发上来 以备以后看
class Solution {
public:
int minimumTotal(vector<vector<int>>& triangle) {
vector<vector<int>> dp(triangle.size(), vector<int>(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];
}
};