代码改变世界

leetcode - Triangle

2013-10-27 15:24  张汉生  阅读(154)  评论(0编辑  收藏  举报

 

 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 };