Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent numbers on the row below.
For example, given the following triangle
[ [2], [3,4], [6,5,7], [4,1,8,3] ]The minimum path sum from top to bottom is 11 (i.e., 2 + 3 + 5 + 1 = 11).
Note:
Bonus point if you are able to do this using only O(n) extra space, where nis the total number of rows in the triangle.
============================================================
这是一个入门题。。。。
C++代码:
class Solution { public: int minimumTotal(vector<vector<int>>& triangle) { int n = triangle.size(); vector<vector<int> > dp(n,vector<int>(n,0)); //要掌握这个初始化代码。 for(int i = 0; i < n; i++) dp[n-1][i] = triangle[n-1][i]; for(int i = n - 2; i >= 0; i--){ for(int j = 0; j <= i;j++){ dp[i][j] = triangle[i][j] + min(dp[i+1][j],dp[i+1][j+1]); } } return dp[0][0]; } };
转载于:https://www.cnblogs.com/Weixu-Liu/p/10846294.html