您的位置:首页 > 其它

[LeedCode OJ]#120 Triangle

2015-08-24 13:57 260 查看
【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】



题目链接:https://leetcode.com/problems/triangle/

题意:
给定一个数字组成的三角形,从顶点走到最底层,只能往下或者往右下走,求走到最底层最小的值

思路:
由于(i,j)只能从(i-1,j)或(i-1,j-1)走到,则状态转移方程为dp[i][j] = min(dp[i-1][j-1],dp[i-1][j])+a[i-1][j-1]

class Solution
{
public:
    int minimumTotal(vector<vector<int> >& a)
    {
        int n = a.size();
        int i,j,k;
        vector<vector<int> > dp;
        dp.resize(n+1);
        for(i = 0; i<=n; i++)
            dp[i].resize(n+1);
        for(i = 0; i<=n; i++)
        {
            for(j = 0; j<=n; j++)
                dp[i][j] = (1<<30);
        }
        dp[1][1] = a[0][0];
        for(i = 2; i<=n; i++)
        {
            for(j = 1; j<=i; j++)
            {
                dp[i][j] = min(dp[i-1][j-1],dp[i-1][j])+a[i-1][j-1];
            }
        }
        int ans = (1<<30);
        for(i = 1; i<=n; i++)
            ans = min(ans,dp
[i]);
        return ans;
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: