您的位置:首页 > 其它

[LeetCode]Minimum Path Sum

2014-12-17 19:37 246 查看
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.

解答:本题采用动态规划的方法,逐列扫描直至目标点



先计算第一行的路径权值f(0),f(1),f(2),接着进行换行,再逐列比较选择路径,依次类推,最终到达目标点。

代码如下:

class Solution {
public:
int minPathSum(vector<vector<int> > &grid) {
int m = grid.size();
int n = grid[0].size();
if(m==1&&n==1)
return grid[0][0];
int minsum=grid[0][0];
vector<int> f;
f.resize(n);
f[0]=grid[0][0];
//设置一个迭代结构
for(int i=1;i<n;i++){
f[i]=grid[0][i]+f[i-1];
}
for(int i=1;i<m;i++){
f[0]+=grid[i][0];
for(int j=1;j<n;j++){
f[j]=min(f[j-1],f[j])+grid[i][j];
}
}

return f[n-1];
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: