首页 > 其他分享 >64. 最小路径和

64. 最小路径和

时间:2024-11-11 08:45:42浏览次数:1  
标签:int 路径 最小 process vector grid ans 64 dp

  1. 题目链接

  2. 这道题目与62.不同路径很像,来到[i, j]位置,只能向下,或者向右走,只不过改题是要求总和最小。

    • process(i, j):当前在[i, j]位置,返回最小路径和
    • 所以当在[i, j],如果还能往下走,一种答案就是process(i + 1, j) + grid[i][j]
    • 如果还能往右走,另一种答案就是process(i, j + 1) + grid[i][j]
    • 两种答案取最小值即可,可以发现,又是暴力递归,两个可变参数,所以直接加缓存即可。
  3. 代码

    class Solution {
    public:
        // 现在在[i, j],返回到达右下角时,最小的路径和   m是行数  n是列数
        int process(const vector<vector<int>>& grid, int i, int j, const int m, const int n, vector<vector<int>> &dp) {
            if (i == m - 1 && j == n - 1) {    // 到达右下角了   直接返回
                return grid[i][j];
            }
            if (dp[i][j] != -1) {
                return dp[i][j];
            }
            int ans = INT32_MAX;
            if (i < m - 1) {    // 还能往下走
                ans = min(ans, process(grid, i + 1, j, m, n, dp) + grid[i][j]);
            }
            if (j < n - 1) {    // 还能往右走
                ans = min(ans, process(grid, i, j + 1, m, n, dp) + grid[i][j]);
            }
            dp[i][j] = ans;
            return ans;
        }
    
        int minPathSum(vector<vector<int>>& grid) {
            int m = grid.size();
            int n = grid[0].size();
            vector<vector<int>>  dp(m, vector<int>(n, -1));
            return process(grid, 0, 0, m, n, dp);
        }
    };
    

标签:int,路径,最小,process,vector,grid,ans,64,dp
From: https://www.cnblogs.com/ouyangxx/p/18539014

相关文章

  • 并查集+最小生成树 学习笔记+杂题 1
    图论系列:前言:相关题单:戳我算法讲解:戳我代码可能过多啊,到时候页面别卡死了,所以就把代码最前面的缺省源删了(反正就是几个头文件/defineintlonglong,自己加一下即可)。并查集记得初始化,最小生成树记得排序。P3367【模板】并查集板子题,给定\(n\)个元素,有2种操作,一种合并,......
  • 62. 不同路径
    题目链接解题思路方法一:暴力递归,process(i,j),当前在[i,j]位置,到达右下角有多少种方法?如果i<m-1,那么可以往下走,所以结果加process(i+1,j)如果j<n-1,那么可以往右走,所以结果加process(i,j+1)因为只有两个可变参数,所以直接加缓存即可。代码class......
  • 【开源鸿蒙】OpenHarmony 5.0 轻量系统最小开发环境搭建
    本文将会介绍,如何下载源代码和工具链,让磁盘占用尽可能小的同时,还可以进行轻量系统上的OpenHarmony开发(进行源码编译构建)。最终实现了将磁盘占用从完整源码的67G减少到了15G,不到完整源码的四分之一磁盘占用!一、写在前面——为什么写本篇内容OpenHarmony5.0发布了,该版本系......
  • 并查集+最小生成树 学习笔记
    图论系列:前言:咲いた野の花よああどうか教えておくれ人は何故傷つけあって争うのでしょう相关题单:题单1题单2题单3题单4一.并查集1.基础定义与操作(1)定义并查集是一种用于管理元素所属集合的数据结构,实现为一个森林,其中每棵树表示一个集合,树中的节点表示对应集合中的......
  • %windir% 是一个环境变量,它指向当前操作系统中 Windows 安装目录的路径。它常用于批处
    %windir%是一个环境变量,它指向当前操作系统中Windows安装目录的路径。它常用于批处理文件、命令行或者脚本中,帮助系统或用户快速定位Windows系统文件夹的路径。类似的环境变量还有很多,它们通常用于在操作系统中快速访问重要的文件夹和目录,避免硬编码路径,从而提高脚本的可移植......
  • 【python】路径与文件管理:pathlib库的现代用法
    【Python】路径与文件管理:pathlib库的现代用法在日常的Python开发中,文件和路径管理是一个常见的任务。无论是读取文件,创建目录,还是获取文件属性,都涉及到路径操作。在Python的早期版本中,我们使用os和os.path模块来处理路径,但这些方法往往显得冗长且不够直观。为了......
  • 最短路径算法综述:原理、比较与实现
    最短路径算法综述:原理、比较与实现一、引言在图论和计算机科学领域,最短路径问题是一个经典且重要的研究内容。它在交通导航、网络路由、物流规划等众多实际应用场景中有着广泛的应用。本文将详细介绍几种常见的最短路径算法,包括Dijkstra算法、Bellman-Ford算法、Floy......
  • 通过C++跨平台的预编译宏来区分不同的操作系统:Win32/Win64/Unix/Linux/MacOS
    因为C++具有跨平台的特性,所以有些需求一套代码就多端使用,比如我最近在学习的OpenGLES。但是,不同平台还是具有一定差异性,所以我们首先得判断出是什么平台?比如iOS系统和Android系统。那么如何判断呢?我们接着往下看!要检查C或C代码中主机的操作系统,我们需要检查编......
  • 代码随想录算法训练营第18天| 530.二叉搜索树的最小绝对差, 501.二叉搜索树中的众数 , 2
    530.二叉搜索树的最小绝对差文章链接:https://programmercarl.com/0530.二叉搜索树的最小绝对差.html视频链接:https://www.bilibili.com/video/BV1DD4y11779/?vd_source=6cb513d59bf1f73f86d4225e9803d47b题目链接:https://leetcode.cn/problems/minimum-absolute-difference-in......
  • 路径上若干条树的包含
    题意别人今天期中考,而你依然在机房里为今年的NOIP努力刷题。一道两道三四道,紫题黑题不会题。暴力枚举TLE,数组开小爆零寄……已过立冬,窗外寒风瑟瑟,但是你看到有一棵树屹立不倒,你也想成为像大树一般挺拔的人。一、二、三……你仔细数着,发现树上有\(n\)个结点。忽然你手里......