120. 三角形最小路径和

 1 //看成一个下三角形
 2 class Solution 
 3 {
 4 public:
 5     int minimumTotal(vector<vector<int>>& triangle) 
 6     {
 7         int n = triangle.size();
 8         int res = INT_MAX;
 9         vector<vector<int>> dp(n,vector<int>(n,0));
10         
11         dp[0][0] = triangle[0][0];//初始化
12         for(int i = 1;i < n;i ++) dp[i][0] = dp[i - 1][0] + triangle[i][0];    //初始化第一列
13         for(int j = 1;j < n;j ++) dp[j][j] = dp[j - 1][j - 1] + triangle[j][j];//初始化主对角线
14 
15         for(int i = 2;i <= n - 1;i ++)
16         {
17             for(int j = 1;j < i; j++) dp[i][j] = triangle[i][j] + min(dp[i - 1][j],dp[i - 1][j - 1]);
18         }
19 
20         for(int j = 0;j < n;j ++) res = min(res,dp[n - 1][j]);//最后一行求最小值
21         return res;
22     }
23 };

 

posted @ 2020-03-19 11:39  Jinxiaobo0509  阅读(165)  评论(0)    收藏  举报