Leetcode:Minimum Path Sum 最小路径和

来源:互联网 发布:linux matlab 编辑:程序博客网 时间:2024/05/05 15:52

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.


此题解法同Triangle 数字三角形。在此不再赘述。

class Solution {public:    int minPathSum(vector<vector<int> > &grid) {        size_t row = grid.size();        if(row == 0)            return 0;        size_t col = grid[0].size();                int **dp = new int *[row];        for(size_t i = 0; i < row; i++)        {            dp[i] = new int[col];        }        dp[0][0] = grid[0][0];        for(size_t i = 1; i < row; i++)        {            for(size_t j = 1; j < col; j++)            {                dp[i][j] = 0;            }        }                for(size_t i = 1; i < col; i++)            dp[0][i] = dp[0][i - 1] + grid[0][i];        for(size_t i = 1; i < row; i++)            dp[i][0] = dp[i - 1][0] + grid[i][0];                    for(size_t i = 1; i < row; i++)            for(size_t j = 1; j < col; j++)                dp[i][j] = min(dp[i][j - 1],dp[i - 1][j]) + grid[i][j];                int result = dp[row - 1][col - 1];                for(size_t i = 0; i < row; i++)            delete []dp[i];        delete []dp;                return result;    }};


0 0
原创粉丝点击