Triangle
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).
//Run Status: Accepted!
//Program Runtime: 4 milli secs
class Solution {
public:
int minimumTotal(vector<vector<int> > &triangle) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int row=triangle.size();
int num=triangle[row-1].size();
int *min_length=new int[num];
min_length[0]=triangle[0][0];
for(int r=1;r<row;r++)
{
int sublength=r+1;
for(int s=sublength-1;s>=0;s--)
{
if(s==sublength-1) min_length[s]=min_length[s-1]+triangle[r][s];
else if(s==0) min_length[s]=min_length[s]+triangle[r][s];
else min_length[s]=min(min_length[s-1],min_length[s])+triangle[r][s];
}
}
int min=min_length[0];
for(int i=1;i<num;i++)
{
if(min_length[i]<=min)
min=min_length[i];
}
return min;
}
};