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 };
Mamba never out

浙公网安备 33010602011771号