1 class Solution {
2 public:
3 int minimumTotal(vector<vector<int> > &triangle) {
4 // Note: The Solution object is instantiated only once and is reused by each test case.
5 const int maxN = 1000000000;
6 int n = triangle.size();
7 if (n<=0)
8 return 0;
9 vector<int> rlt(n,0);
10 rlt[0] = triangle[0][0];
11 int last, cur;
12 for (int i=1; i<n; i++){
13 last = rlt[0];
14 rlt[0]=rlt[0]+triangle[i][0];
15 for (int j=1; j<i; j++){
16 cur = rlt[j];
17 rlt[j] = (cur<=last?cur:last) + triangle[i][j];
18 last = cur;
19 }
20 rlt[i] = last+triangle[i][i];
21 }
22 int min = rlt[0];
23 for (int i=1; i<n; i++)
24 if (rlt[i]<min)
25 min = rlt[i];
26 return min;
27 }
28 };