c++的下降路径最短和---->动态规划详解

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

/***
 * 分析:<----最优化问题----->此题用动态规划去写
 * 1、第一步确定状态---->直接用它自己本身去写A[n][c]
 * 表示从第n层的第c个元素往下的最下的距离
 * 2、第二步确定状态转移方程
 * 状态转移方程可以分为三个部分
 * 1、当c==0的时候
 * A[n][c]+=min(A[n+1][c],A[n+1][c+1]);
 * 2、当c<列宽时
 * A[n][c]+=min3(A[n+1][c-1],A[n+1][c],A[n+1][c+1]);
 * 3、当c==列宽时
 * A[][]+=min(A[n+1][c-1],A[n+1][c]);
 * 三种情况都写出来后就可以找出第一排中的最小的元素并返回即可
 * res=min(res,A[0][i]);------>来个for循环
 * return res;
*/

class Solution {
public:
    int min3(int x,int y,int z)
    {
        return min(min(x,y),z);
    }
public:
    int minFallingPathSum(vector<vector<int>>& A) {
        int m=A.size();
        for(int i=m-2;i>=0;--i)     //从倒数第二排开始
        {
            for(int j=0;j<A[i].size();++j)
            {
                if(j==0)
                    A[i][j]+=min(A[i+1][j],A[i+1][j+1]);
                else if(j==A[i].size()-1)
                    A[i][j]+=min(A[i+1][j-1],A[i+1][j]);
                else if(j<A[i].size()-1)
                    A[i][j]+=min3(A[i+1][j-1],A[i+1][j],A[i+1][j+1]);
            }
        }
        int res=INT_MAX;
        for(int i=0;i<A[0].size();++i)
            res=min(res,A[0][i]);
        return res;
    }
};

原文地址:https://www.cnblogs.com/z2529827226/p/11749850.html

时间: 2024-10-09 12:53:17

c++的下降路径最短和---->动态规划详解的相关文章

第52讲:Scala中路径依赖代码实战详解

<DT大数据梦工厂>大数据实战视频"Scala深入浅出实战经典"视频.音频和PPT下载!第52讲:Scala中路径依赖代码实战详解百度云:http://pan.baidu.com/s/1gdES4hX360云盘:http://yunpan.cn/ccHXX2Wkrrrt4 访问密码 c489腾讯微云:http://url.cn/VV5kx5 记录: Scala中内部类的路径依赖非常适合现在互联网看待事物所属关系,组织关系. 根据依赖的外部实例的不同,内部类类型会有所不同.由

HDOJ To The Max 1081【动态规划-详解求最大子矩阵】

To The Max Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9879    Accepted Submission(s): 4762 Problem Description Given a two-dimensional array of positive and negative integers, a sub-rectan

iOS沙盒路径变化的说明详解

最近用沙盒存储文件的时候发现了一个奇怪的现象,由于业务需要,我会将保存的文件绝对路径保存以便下次读取. 于是发现一个找不到的现象,即上一次保存下的绝对路径,再第二次打开app去查找的时候,发现找不到... 比如: 我第一次保存一个文件,保存路径如下: /Users/MACBOOK/Library/Developer/CoreSimulator/Devices/42B54721-B3EB-448A-A450-1E11165011A0/data/Containers/Data/Application

Scala 深入浅出实战经典 第52讲:Scala中路径依赖代码实战详解

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2土豆:http://www.tudou.com/programs/view/jeikRw_tlBM/优酷:http://v.youku.com/v_show/id_

路径问题以及cookie详解

1.路径问题: 注意 .代表执行程序的文件夹路径,在tomcat中也就是bin目录,所以要用this.getServletContext().getRealPath("/WEB-INF/classes/db.properties");得到绝对路径: 代码练习: package com.http.path; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import jav

硬币问题-动态规划详解

基本动态规划之硬币问题 问题描述 假设有 1 元,3 元,5 元的硬币若干(无限),现在需要凑出 11 元,问如何组合才能使硬币的数量最少? 问题分析 乍看之下,我们简单的运用一下心算就能解出需要 2 个 5 元和 1 个 1 元的解.当然这里只是列出了这个问题比较简单的情况.当硬币的币制或者种类变化,并且需要凑出的总价值变大时,就很难靠简单的计算得出结论了.贪心算法可以在一定的程度上得出较优解,但不是每次都能得出最优解. 这里运用动态规划的思路解决该问题.按照一般思路,我们先从最基本的情况来一

Quartz-2D绘图之路径(Paths)详解

在上篇文章中,我们简单的理解了绘图上下文,今天我们来认识一下Quartz-2D中另一个重要的概念,路径(Paths). 一.理解路径 路径定义了一个或多个形状,或是子路径.一个子路径可由直线,曲线,或者同时由两者构成.它可以是开放的,也可以是闭合的.一个子路径可以是简单的形状,如线.圆.矩形.星形:也可以是复杂的形状,如山脉的轮廓或者是涂鸦.图3-1显示了一些我们可以创建的路径.左上角的直线可以是虚线:直线也可以是实线.上边中间的路径是由多条曲线组成的开放路径.右上角的同心圆填充了颜色,但没有描

Scala中路径依赖代码实战详解之Scala学习笔记-42

package com.leegh.parameterization /** * @author Guohui Li */ class Outer { private val x = 10 class Inner { private val y = x + 10 }} object Path_Dependence { def main(args: Array[String]): Unit = { val outer = new Outer val inner = new outer.Inner

HTTP常用配置信息详解

一.安装httpd 二.相关文件路径 三.配置文件详解 四.转载比较详细的HTTP配置中英文对照 一.安装httpd 1.安装方式:yum源.rpm包.源码包编译安装,这里为了方便使用yum源安装 [[email protected] html]# yum install -y httpd 可以安装本地帮助手册 [[email protected] conf]# yum install -y httpd-manual 访问地址http://httpd主机ip/manual/ 2.开启服务 [[e