• 64. Minimum Path Sum


    https://leetcode.com/problems/minimum-path-sum/

    本题大意:给出一个m*n的表格,里面存储了m*n个非负整数,在从左上角走到右下角的路径中(要求每次只允许向下或者向右一步),找出路径中经历的最小的数字之和。

    解题思路:用f[i][j]表示从原点出发到第i行第j列所经历的最小和,则f[i][j]的前一步要么是f[i][j-1],要么是f[i-1][j],选择其中的最小值与该步本身的数字相加,就可以得到f[i][j]。但是要注意表格的边界要做特殊处理,边界上只有一个方向可以走。

    从以上可以看出,该题是典型的动态规划。

    代码如下:

     1 class Solution {
     2 public:
     3     int minPathSum(vector<vector<int> >& grid) {
     4         int row = grid.size();
     5         int col = grid[0].size();
     6         if(row == 0) return 0;
     7 
     8         int f[row][col];
     9         for(int i = 0; i < row; i++)
    10         {
    11             for(int j = 0; j < col; j++)
    12             {
    13                 f[i][j] = grid[i][j];
    14             }
    15         }
    16         for(int i = 0; i < row; i++)
    17         {
    18             for(int j = 0; j < col; j++)
    19             {
    20                 if(i >= 1 && j >= 1)
    21                 {
    22                     f[i][j] += min(f[i-1][j], f[i][j-1]);
    23                 }
    24                 else if(i >= 1) f[i][j] += f[i-1][j];
    25                 else if(j >= 1) f[i][j] += f[i][j-1];
    26             }
    27         }
    28         return f[row-1][col-1];
    29     }
    30 };
  • 相关阅读:
    表单元素的required,autocomplete,list用法
    通用triggerEvent方法
    通用addEventListener方法
    关于动态加载js
    Node路由简单的处理
    As3截图转换为ByteArray传送给后台node的一种方法
    JS中的“==”符号及布尔值转换规则
    解释JS变量作用域的范例
    .NET异步委托
    正则表达式入门
  • 原文地址:https://www.cnblogs.com/jingyuewutong/p/5583615.html
Copyright © 2020-2023  润新知