给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。
例如,给定三角形:
[
     [2],
    [3,4],
   [6,5,7],
  [4,1,8,3]
]

自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。
 
思路:自底向上的动态规划,从三角形倒数第二行开始看, triangle[i][j] 一定会到达  triangle[i+1][j] 或者  triangle[i+1][j+1] 得出状态转移方程,
所以当前状态最小和就是 triangle[i+1][j] 与 triangle[i+1][j+1] 的最小值加上 triangle[i][j] 
得出状态转移方程: triangle[i][j] = min(triangle[i+1][j],triangle[i+1][j+1]) + triangle[i][j]  
简单来说:数组中元素的变化
2
3,4
6,5,7
4,1,8,3
对6来说肯定选4和1的最小值与它相加,对5来说肯定选1与8的最小值与它相加,对7来说肯定选8与3的最小值与它相加所以变成
2
3,4
7,6,10
4,1,8,3
同理:
2
9,10
7,6,10
4,1,8,3
2与9与10的最小值相加为11,即返回11.  可以得出的遍历行和列,所以算法复杂度O(N^2);
 1 #define min(a,b) (a < b ? a : b)
2
3 int minimumTotal(int** triangle, int triangleSize, int* triangleColSize)
4 {
5 int i,j;
6 if(triangle == NULL)
7 {
8 return 0;
9 }
10
11 for(i = triangleSize-2;i>=0; i--)
12 {
13 for(j = 0; j < triangleColSize[i]; j++)
14 {
15 triangle[i][j] = min(triangle[i+1][j],triangle[i+1][j+1]) + triangle[i][j];
16 }
17 }
18 return triangle[0][0];
19 }
 
 
 
 

DP:三角形的最小路径和的更多相关文章

  1. [DP]矩阵的最小路径和

    题目 给定一个矩阵m, 从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的树子累加起来就是路径和,返回所有的路径中最小的路径和. 解法一 这是一道经典的动态规划题,状态转移方程为d ...

  2. lintcode :最小路径和

    题目: 最小路径和 给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径. 样例   注意 你在同一时间只能向下或者向右移动一步 解题: 这个和求三角形的最小路径的差不多 ...

  3. 1. 线性DP 120. 三角形最小路径和

    经典问题: 120. 三角形最小路径和  https://leetcode-cn.com/problems/triangle/ func minimumTotal(triangle [][]int) ...

  4. [Swift]LeetCode120. 三角形最小路径和 | Triangle

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...

  5. LeetCode(120):三角形最小路径和

    Medium! 题目描述: 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] ...

  6. 领扣-120 三角形最小路径和 Triangle MD

    三角形最小路径和 Triangle 数组 动态规划 问题 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [2], [3,4], [6,5,7], ...

  7. LeetCode 三角形最小路径和

    给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11 ...

  8. [算法]LeetCode 120:三角形最小路径和

    题目描述: 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和 ...

  9. LeetCode 120. 三角形最小路径和(Triangle)

    题目描述 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径 ...

  10. Leetcode120.Triangle三角形最小路径和

    给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11 ...

随机推荐

  1. HBase Compaction 原理与线上调优实践

    作者:vivo 互联网存储技术团队- Hang Zhengbo 本文对 HBase Compaction 的原理.流程以及限流的策略进行了详细的介绍,列举了几个线上进行调优的案例,最后对 Compac ...

  2. ENVI、ERDAS计算Landsat 7地表温度:单窗算法实现

    本文介绍基于ENVI与ERDAS软件,对Landsat 7遥感影像数据加以单窗算法的地表温度(LST)反演操作. 目录 1 原理部分与前期操作准备 1.1 图像预处理 1.2 植被指数反演 1.3 单 ...

  3. npm 切换源

    切换到淘宝源 npm config set registry https://registry.npm.taobao.org 切换回官方源 npm config set registry http:/ ...

  4. 链表/栈/队列/KMP

    链表 用数组模拟,不同于结构体加指针 调用new关键字开上万级别的节点非常慢,基本会超时 单链表 来构造邻接表 用于存图与树 基本结构: head 表示头结点的下标 e[i] 表示节点i的值 ne[i ...

  5. 二 APPIUM Android自动化 环境搭建(转)

    1.安装JAVA运行环境 2.安装Android开发环境 3.安装nodejs 下载地址:https://nodejs.org/en/ 下载完成之后双击安装. 4.安装APPIUM,Appium服务端 ...

  6. webpack是如何处理css/less资源的呢

    上一篇文章 体验了webpack的打包过程,其中js文件不需要我们手动配置就可以成功解析,可其它类型的文件,比如css.less呢? css-loader 首先,创建一个空文件夹,通过 npm ini ...

  7. debian11安装mysql5.7

    前言 mysql官网5.7版本的只找到debian10的,没有debian11的,试了下也能用. 系统版本:debian 11 mysql版本:5.7.35 步骤 下载bundle的tar包.官网地址 ...

  8. jsp+servlet实战项目

    第一步:新建maven项目,项目中添加dao,entity,service,servlet,util包第二步:导入依赖 第三步:数据库建表 第四步:entity实体包(疯转) 第五步:在util工具包 ...

  9. 产品代码都给你看了,可别再说不会DDD(一):DDD入门

    这是一个讲解DDD落地的文章系列,作者是<实现领域驱动设计>的译者滕云.本文章系列以一个真实的并已成功上线的软件项目--码如云(https://www.mryqr.com)为例,系统性地讲 ...

  10. Ansible快速复习

    本文章是上一篇ansible自动化运维的快速复习以及项目上用到的一些命令,针对长时间未使用ansible,导致命令忘记的同学,帮助快速回忆.详细内容还是看上一章'ansible自动化运维'. 查看版本 ...