当前位置: 首页 > article >正文

【每日一题】04最小路径和 (DP3)

问题描述

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

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

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

问题求解

使用f[i][j]表示到位置[i][j]的最短路径长度
初始条件: f[0][0] = grid[0][0]
状态转移方程: f[i][j] = fmin(f[i-1][j] , f[i][j-1]) + grid[i][j]
边界条件:第一列 j=0: f[i][j] = f[i-1][j] + grid[i][j]; 第一行 i=0: f[i][j] = f[i][j-1] + grid[i][j];

int minPathSum(int** grid, int gridSize, int* gridColSize) {
    int ** f = (int **)malloc(sizeof(int *) * gridSize);
    for(int i =0; i<gridSize; i++){
        f[i] = (int *)malloc(sizeof(int) * gridColSize[0]);
    }

    f[0][0] = grid[0][0];

    int i,j,temp;
    for(i=0; i<gridSize; i++){
        for(j = 0; j<gridColSize[0]; j++){
            if(i>0 && j >0){
                temp = fmin(f[i-1][j], f[i][j-1]);
                f[i][j] = temp + grid[i][j];
            }
            else if(i > 0){
                f[i][j] = f[i-1][j] + grid[i][j];
            }
            else if(j >0){
                f[i][j] = f[i][j-1] + grid[i][j];
            }
        }
    }

    return f[gridSize-1][gridColSize[0]-1];
    
}

http://www.kler.cn/news/234642.html

相关文章:

  • 【C语言】(20)动态内存分配
  • HiveQL——不借助任何外表,产生连续数值
  • Linux CentOS stream 9 alias
  • 【JavaScript 漫游】【014】正则表达式通关
  • VitePress-14- 配置-titleTemplate 的作用详解
  • 2.11学习总结
  • Redisson分布式锁 原理 + 运用 记录
  • CentOS基于volatility2的内存取证实验
  • bcdedit /store 填什么,Windows11的BCD文件在哪里?
  • CrossOver虚拟机软件功能相似的软件
  • 6.JavaScript中赋值运算符,自增运算符,比较运算符,逻辑运算符
  • 深入理解 Nginx 插件及功能优化指南
  • 绕过安全狗优化
  • 力扣_字符串5—解码方法
  • 吹响AI PC号角!微软在Windows中不断增加“Copilot含量”
  • 【Spring学习】Spring Data Redis:RedisTemplate、Repository、Cache注解
  • Java字符串(包含字母和数字)通用排序
  • 【MySQL】-15 MySQL综合-1(数据库概念+数据库涉及技术)
  • 【数据结构】13:表达式转换(中缀表达式转成后缀表达式)
  • 【Java】悲观锁和乐观锁有什么区别?
  • 【java】笔记10:类与对象——本章练习
  • Leetcode 3033. Modify the Matrix
  • Spring + Tomcat项目中nacos配置中文乱码问题解决
  • 代码随想录算法训练营第39天(动态规划02● 62.不同路径 ● 63. 不同路径 II
  • 第二节 zookeeper基础应用与实战
  • 知识价值2-什么是IDE?新手用哪个IDE比较好?
  • python:lxml 读目录.txt文件,用 xmltodict 转换为json数据,生成jstree所需的文件
  • 寒假作业5
  • 基于python和matlab的复杂函数拟合的方法、工具以及学习资料
  • 【中间件学习】什么是中间件