题意:给出一个mxn的非负二维数组,求从左上方到右下方所有路径中最小的和。
分析:动态规划。dp[i][j]+=max(dp[i][j+1j],dp[i+1][j])
代码:
int minPathSum(int **grid, int nRows, int nCols) {
for(int i=nRows-2;i>=0;--i){
grid[i][nCols-1]+=grid[i+1][nCols-1];
}
for(int i=nCols-2;i>=0;--i){
grid[nRows-1][i]+=grid[nRows-1][i+1];
}
for(int i=nRows-2;i>=0;--i){
for(int j=nCols-2;j>=0;--j){
grid[i][j]+=(grid[i][j+1]<grid[i+1][j]?grid[i][j+1]:grid[i+1][j]);
}
}
return grid[0][0];
}