Leetcode刷题之路-动态规划相关

64.最小路径和

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

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

示例:

输入:
[
  [1,3,1],
  [1,5,1],
  [4,2,1]
]
输出: 7
解释: 因为路径 13111 的总和最小。
  • [ 算是比较好理解的动态规划问题,所以放到最前面容易回看复习 ]
  • [ 因为路径有很多条,要每一条路径都遍历出来时间复杂度极高,因为存在很多重复走过的路 ]
  • [ 动态规划的核心观念应该是把要重复利用的东西先保存好,避免程序做重复无意义的工作 ]
  • [ 这题应该算比较简单而且能体现出动态规划的思想的 ]
int minPathSum(vector<vector<int>>& grid) {
        for(int i=0,leni=grid.size();i<leni;++i) 
            for(int j=0,lenj=grid[0].size();j<lenj;++j){ //开始把所有元素遍历一次,下面就是分情况了
                if(i==0&&j!=0) grid[i][j] += grid[i][j-1]; //如果遍历到矩阵阵顶的元素,那就只有上一个元素往右走才能到达这个元素,所以后一个元素与前一个元素相加
                else if(i!=0&&j==0) grid[i][j] += grid[i-1][j];//如果遍历到矩阵最左的元素,那就只有上面的元素往下走才能到达这个元素,所以下面一个元素和上面一个元素相加
                else if(i!=0&&j!=0) grid[i][j] += grid[i-1][j] < grid[i][j-1] ? grid[i-1][j] : grid[i][j-1]; //不是最上面也不是最左边的元素,那就有可能是从上面来,也有可能从左边来,那就取两者之间的最小值
            }
        return grid[grid.size()-1][grid[0].size()-1];//最后返回右下角的元素就是答案
    }
posted @   JoyooO  阅读(128)  评论(0编辑  收藏  举报
编辑推荐:
· ASP.NET Core - 日志记录系统(二)
· .NET 依赖注入中的 Captive Dependency
· .NET Core 对象分配(Alloc)底层原理浅谈
· 聊一聊 C#异步 任务延续的三种底层玩法
· 敏捷开发:如何高效开每日站会
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(一):从.NET IoT入
· .NET 开发的分流抢票软件,不做广告、不收集隐私
· ASP.NET Core - 日志记录系统(二)
· C#实现 Winform 程序在系统托盘显示图标 & 开机自启动
· 实现windows下简单的自动化窗口管理
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.