zoukankan      html  css  js  c++  java
  • Minimum Path Sum

            Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.

            Note: You can only move either down or right at any point in time.

     

            思路:本题的解题思路与《Unique Paths》一样,也是典型的动态规划问题。要求从左上角grid[0][0]到右下角grid[m-1][n-1]的路径最小值,可以从grid[m-1][n-1]开始,从右向左,从下到上的依次求出grid[i][j]到grid[m-1][n-1]的路径最小值。

            设min[i][j]表示从grid[i][j]到grid[m-1][n-1]的最小值。因只能向下或者向右走,所以min[i][j] = grid[i][j]+min(min[i][j+1],min[i+1][j]),因此,只要求出了min[i][j+1]和min[i+1][j],就可以求出min[i][j]了。代码如下:

    int minPathSum(int** grid, int gridRowSize, int gridColSize) 
    {
        int i, j;
        for(i = gridRowSize-1; i >= 0; i--)
        {
            for(j = gridColSize-1; j >= 0; j--)
            {
                if(i == gridRowSize-1 && j == gridColSize-1)    continue;
            
                if(i == gridRowSize-1)
                {
                    grid[i][j] += grid[i][j+1];
                    continue;
                }
    
                if(j == gridColSize-1)
                {
                    grid[i][j] += grid[i+1][j];
                    continue;
                }
    
                grid[i][j] += min(grid[i+1][j], grid[i][j+1]);
            }
        }
    
        return grid[0][0];
    }
    


  • 相关阅读:
    任务墙(6月3日)
    燃尽图(6月3日)
    6.1-6.2小结
    5月28日任务进展
    个人感悟
    代码评审
    如何用ZBrush确定头部五官的位置
    ZBrush中的纹理-水手该怎样进行绘制
    怎样对ZBrush中的材料进行渲染和着色
    快速熟悉Zbrush中的四种裁切笔刷
  • 原文地址:https://www.cnblogs.com/gqtcgq/p/7247123.html
Copyright © 2011-2022 走看看