思路
动态规划。
代码
int minPathSum(vector<vector<int>>& grid) {
int m=grid.size();
int n=grid[0].size();
if(m==0||n==0) return 0;
int f[m][n];
f[0][0]=grid[0][0]; //初始化
//the first row(边界条件)
for(int j=1;j<n;j++){
f[0][j]=f[0][j-1]+grid[0][j];
}
//the first column(边界条件)
for(int i=1;i<m;i++){
f[i][0]=f[i-1][0]+grid[i][0];
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
f[i][j]=min(f[i][j-1],f[i-1][j])+grid[i][j]; //转移方程
}
}
return f[m-1][n-1];
}