题目也跟之前的http://blog.csdn.net/xiaoxiaoluo/article/details/44651923差不多,这回每个格子有一个值,求到最右下格子时,经过路径的这个格子数总和最小
class Solution {
public:
int minPathSum(vector<vector<int> > &grid) {
if(grid.empty() || grid[0].empty()) {
return 0;
}
int m = grid.size(), n = grid[0].size();
vector<int> dp(n, 0);
dp[0] = grid[0][0];
for(int i = 1; i < n; i++) {
dp[i] = dp[i - 1] + grid[0][i];
}
for(int i = 1; i < m; i++) {
dp[0] += grid[i][0];
for(int j = 1; j < n; j++) {
dp[j] = min(dp[j], dp[j - 1]) + grid[i][j];
}
}
return dp[n - 1];
}
};