您的位置:首页 > 其它

leetcode- Minimum Path Sum

2014-09-24 22:39 423 查看
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];
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: