Minimum Path Sum

来源:互联网 发布:淘宝送货入户怎么设置 编辑:程序博客网 时间:2024/05/17 00:16

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.

思路:典型DP.

class Solution {public:    int minPathSum(vector<vector<int> > &grid) {        if (grid.empty()) {            return 0;        }                int rows = grid.size();        int cols = grid[0].size();                vector<vector<int> > dp(rows, vector<int>(cols, 0));        dp[0][0] = grid[0][0];                for (int i = 1; i < rows; i++) {            dp[i][0] = dp[i - 1][0] + grid[i][0];        }                for (int i = 1; i < cols; i++) {            dp[0][i] = dp[0][i - 1] + grid[0][i];        }                for (int i = 1; i < rows; i++) {            for (int j = 1; j < cols; j++) {                dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];            }        }                return dp[rows - 1][cols - 1];    }};


0 0
原创粉丝点击