• LeetCode-64-最小路径和


    题目

    给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

    说明:每次只能向下或者向右移动一步。

    示例:

    输入: [ [1,3,1], [1,5,1], [4,2,1] ] 输出: 7 解释: 因为路径 1→3→1→1→1 的总和最小。

    思路

    这道题属于第62题的变种,基本思路和其一样,都是分治的思想,感觉有点类似与数学归纳法:

    每个格子都只可能从其上面或者左边到达,故到达每个格子的最短路径只能从其上面或左边产生,

    所以只需比较上面和左边哪个的路径和最小,相加即可,需要注意边界的处理,第一行没有上面的格子;

    第一列没有左边的格子,所以其路径直接由仅剩的格子路径相加即可,代码如下:

    代码

    #include <stdio.h>

    int minPathSum(int** grid, int gridSize, int* gridColSize){
    // 定义行和列
    int m = gridSize;
    int n = *gridColSize;

    int i = -1, j = -1;
    for (i=0; i<m; i++)
    {
    for (j=0; j<n; j++)
    {
    // 处理边界
    if (0==i && 0==j) continue;
    if (0==i)
    {
    grid[i][j] += grid[i][j-1];
    }
    else if (0==j)
    {
    grid[i][j] += grid[i-1][j];
    }

    // 当前最小路径为上面和左边格子数取最小并和当前相加
    else
    {
    int tmp = (grid[i-1][j] > grid[i][j-1]) ? grid[i][j-1] : grid[i-1][j];
    grid[i][j] += tmp;
    }
    }
    }
    return grid[m-1][n-1];
    }



  • 相关阅读:
    JavaScript高级第01天笔记
    JavaScript基础第06天笔记
    JavaScript基础第05天笔记
    JavaScript基础第04天笔记
    JavaScript基础第03天笔记
    JavaScript基础第02天笔记
    JavaScript基础第01天笔记
    03-CSS文字文本样式
    CSS第二天笔记
    浮动
  • 原文地址:https://www.cnblogs.com/sakurapiggy/p/12584620.html
Copyright © 2020-2023  润新知