leetcode- Minimum Path Sum

来源:互联网 发布:node.js python 编辑:程序博客网 时间:2024/05/21 06:53

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.

分析:动态规划法,sum[i+1][j+1] = min(sum[i][j+1] ,sum[i+1][j]) + grid[i+1][j+1];

class Solution {public:    int minPathSum(vector<vector<int> > &grid) {        int n = grid.size();        if(n == 0)return 0;        int m = grid[0].size();        vector<vector<int> > sum;        sum = grid;        for(int i = 1; i < n; i++) sum[i][0] = sum[i-1][0]+sum[i][0];        for(int j = 1; j < m; j++)sum[0][j] = sum[0][j-1]+sum[0][j];                for(int i = 0; i < n-1; i++)            for(int j = 0; j < m-1;j++)            {                int min;                if(sum[i][j+1] < sum[i+1][j])min = sum[i][j+1];                else min = sum[i+1][j];                sum[i+1][j+1] = min + sum[i+1][j+1];            }                return sum[n-1][m-1];    }};


0 0