最小路径和—Triangle

来源:互联网 发布:mac book 新建文件夹 编辑:程序博客网 时间:2024/05/17 07:21

给定一个三角形,求自顶向下的最小路径和
每一步你可以移动相邻的数字到下面的行
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)
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
Triangle
利用动态规划,其状态转移方程为
f(i,j) = min{f(i + 1,j),f(i + 1,j + 1)} + (i,j)

int minimumTotal(vector<vector<int>>& triangle) {    if (triangle.empty())        return 0;    for (int i = triangle.size() - 2; i >= 0; --i)    {        for (int j = 0; j <= i; ++j)        {            triangle[i][j] += min(triangle[i + 1][j], triangle[i + 1][j + 1]);        }    }    return triangle[0][0];}
0 0
原创粉丝点击