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

Minimum Path Sum

时间:2019-05-14 18:53:09      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:numbers   empty   ber   Plan   only   led   push   any   class   

Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.

Note: You can only move either down or right at any point in time.

Example:

Input:
[
  [1,3,1],
  [1,5,1],
  [4,2,1]
]
Output: 7
Explanation: Because the path 13111 minimizes the sum.

recursion

class Solution
{
public:
    int minPathSum(vector<vector<int>>& grid)
    {
        if(grid.empty())
            return 0;
        vector<int> res;
        int sum=grid.at(0).at(0);
        minPathSum(grid,0,0,sum,res);
        return *min_element(res.begin(),res.end());
    }
private:
    void minPathSum(vector<vector<int>>& grid,int x,int y,int &sum,vector<int> &res)
    {
        if(x==grid.size()-1&&y==grid.at(0).size()-1)
        {
            res.push_back(sum);
            return ;
        }

        if(x+1<grid.size())
        {
            sum+=grid.at(x+1).at(y);
            minPathSum(grid,x+1,y,sum,res);
            sum-=grid.at(x+1).at(y);
        }
        if(y+1<grid.at(0).size())
        {
            sum+=grid.at(x).at(y+1);
            minPathSum(grid,x,y+1,sum,res);
            sum-=grid.at(x).at(y+1);
        }
        return ;
    }
};

dp

class Solution
{
public:
    int minPathSum(vector<vector<int>>& grid)
    {
        if(grid.empty())
            return 0;

        int row=grid.size();
        int col=grid.at(0).size();
        vector<vector<int>> tmp(grid);

        for(int i=1;i<row;++i)
            tmp.at(i).at(0)+=tmp.at(i-1).at(0);
        for(int i=1;i<col;++i)
            tmp.at(0).at(i)+=tmp.at(0).at(i-1);

        for(int i=1;i<row;++i)
        {
            for(int j=1;j<col;++j)
                tmp.at(i).at(j)+=min(tmp.at(i-1).at(j),tmp.at(i).at(j-1));
        }

        return tmp.at(row-1).at(col-1);
    }
};

 

Minimum Path Sum

标签:numbers   empty   ber   Plan   only   led   push   any   class   

原文地址:https://www.cnblogs.com/tianzeng/p/10863822.html

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