码迷,mamicode.com
首页 > 其他好文 > 详细

triangle

时间:2018-02-08 12:16:02      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:nim   i++   example   path   ==   for   ber   style   blog   


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 is11(i.e., 2 + 3 + 5 + 1 = 11).
Note: 
Bonus point if you are able to do this using only O(n) extra space, where n is the total number of rows in the triangle.
int minimumTotal(vector<vector<int> > &triangle) {
        int n = triangle.size();
        int res = 1e8;
        if(n==1)
        {
            res = triangle[0][0];
        }
        for(int i = 1; i < n;i++){
            for(int j = 0;j <= i;j++){
            if(j == 0){
               triangle[i][j] = triangle[i][j]+triangle[i-1][j]; 
            }else if(i == j){
               triangle[i][j] = triangle[i][j]+triangle[i-1][j-1];
            }
            else{
                triangle[i][j] = triangle[i][j]+min(triangle[i-1][j],triangle[i-1][j-1]);
            }
            if(i == n-1){
                res = min(res,triangle[i][j]);
            }
            }
        }
        return res;
    }

后退法:

 int minimumTotal(vector<vector<int> > &triangle) {
        
        int n = triangle.size();
        for(int i = n-2;i >= 0;i-- ){
            for(int j = 0;j<=i;j++){
                triangle[i][j] = triangle[i][j]+min(triangle[i+1][j],triangle[i+1][j+1]);
            }
        }
        return triangle[0][0];
    }

 

triangle

标签:nim   i++   example   path   ==   for   ber   style   blog   

原文地址:https://www.cnblogs.com/lyf-sunicey/p/8430713.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!