数字三角形-LintCode

来源:互联网 发布:mac上eclipse汉化 编辑:程序博客网 时间:2024/06/05 15:22

给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。
样例
比如,给出下列数字三角形:
[
[2],
[3,4],
[6,5,7],
[4,1,8,3]
]
从顶到底部的最小路径和为11 ( 2 + 3 + 5 + 1 = 11)。

#ifndef C109_H#define C109_H#include<iostream>#include<vector>using namespace std;class Solution {public:    /**    * @param triangle: a list of lists of integers.    * @return: An integer, minimum path sum.    */    int minimumTotal(vector<vector<int>> &triangle) {        // write your code here        int len = triangle.size();        for (int i = len - 2; i >= 0; --i)        {            for (int j = 0; j < triangle[i].size(); ++j)            {                triangle[i][j] = minVal(triangle[i + 1][j], triangle[i + 1][j + 1]) + triangle[i][j];            }        }        return triangle[0][0];    }    int minVal(int m, int n)    {        return m < n ? m : n;    }};#endif