让我们看看步骤-
创建一个表以用于动态编程方法。
n:=三角形的大小
对于i:= n – 2降至0
dp [j]:=三角形[i,j] + dp [j]和dp [j +1]的最小值
对于j:= 0到i
返回dp [0]
让我们看下面的实现以更好地理解-
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int minimumTotal(vector<vector<int>>& triangle) {
      vector <int> dp(triangle.back());
      int n = triangle.size();
      for(int i = n - 2; i >= 0; i--){
         for(int j = 0; j <= i; j++){
            dp[j] = triangle[i][j] + min(dp[j], dp[j + 1]);
         }
      }
      return dp[0];
   }
};
main(){
   Solution ob;
   vector<vector<int> > v = {{2},{3,4},{6,5,7},{4,1,8,3}};
   cout << ob.minimumTotal(v);
}[[2],[3,4],[6,5,7],[4,1,8,3]]
输出结果
11