1.题目:
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
示例:
输入:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
输出: 7
解释: 因为路径 1→3→1→1→1 的总和最小。
2.代码:
int minPathSum(int** grid, int gridRowSize, int gridColSize) {
int row=gridRowSize,col=gridColSize;
for(int j=col-2;j>=0;--j)
grid[row-1][j]+=grid[row-1][j+1];
for(int i=row-2;i>=0;--i){
for(int j=col-1;j>=0;--j){
if(j==col-1)
grid[i][j]+=grid[i+1][j];
else{
int x=grid[i][j]+grid[i+1][j];
int y=grid[i][j]+grid[i][j+1];
grid[i][j]=x<y?x:y;
}
}
}
return grid[0][0];
}
3.知识点:
动态规划