[leetcode]64. 最小路径和

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.知识点:

动态规划

猜你喜欢

转载自blog.csdn.net/MJ_Lee/article/details/88369951