题目描述:
很简单的动态规划题,注意写得时候先把第一行和第一列dp了,这样代码更美观,source code:
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int m = grid.size();
int n = grid[0].size();
int dp[m][n];
int i,j;
dp[0][0] = grid[0][0];
for(i = 1;i < m;i++){
dp[i][0] = grid[i][0] + dp[i-1][0];
}
for(j = 1; j < n;j++){
dp[0][j] = grid[0][j] + dp[0][j-1];
}
for(i = 1;i < m;i++){
for(j = 1;j < n;j++){
dp[i][j] = min(dp[i-1][j],dp[i][j-1]) + grid[i][j];
}
}
return dp[m-1][n-1];
}
};