[C++][算法基础]数字三角形(动态规划)

给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。

        73   88   1   02   7   4   4
4   5   2   6   5
输入格式

第一行包含整数 𝑛,表示数字三角形的层数。

接下来 𝑛 行,每行包含若干整数,其中第 𝑖 行表示数字三角形第 𝑖 层包含的整数。

输出格式

输出一个整数,表示最大的路径数字和。

数据范围

1≤𝑛≤500,
−10000≤三角形中的整数≤10000

输入样例:
5
7
3 8
8 1 0 
2 7 4 4
4 5 2 6 5
输出样例:
30

代码:

1. 自下而上做法

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;const int N = 510;
int f[N][N];
int n;int DP(){for(int i = n - 1;i >= 1;i --){for(int j = 1;j <= i;j ++){f[i][j] = max(f[i + 1][j],f[i + 1][j + 1]) + f[i][j];}}return f[1][1];
}int main(){cin>>n;for(int i = 1;i <= n;i ++){for(int j = 1;j <= i;j ++){cin>>f[i][j];}}int res = DP();cout<<res<<endl;return 0;
}

2. 自上而下做法

 

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;const int N = 510;
int f[N][N];
int n;int DP(){for(int i = 1;i <= n;i ++){for(int j = 1;j <= i;j ++){if(i == j){f[i][j] = f[i - 1][j - 1] + f[i][j];}else if(j == 1){f[i][j] = f[i - 1][j] + f[i][j];}else{f[i][j] = max(f[i - 1][j],f[i - 1][j - 1]) + f[i][j];}}}int res = f[n][1];for(int i = 1;i <= n;i ++){res = max(res, f[n][i]);}return res;
}int main(){cin>>n;for(int i = 1;i <= n;i ++){for(int j = 1;j <= i;j ++){cin>>f[i][j];}}int res = DP();cout<<res<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/3695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++ 智能指针 交换函数实验

1.概要 c 智能指针 交换函数实验 交换后&#xff0c;两个指针管理的目标对象会发生交换 sh_ptr1.swap(sh_ptr2); 2.代码 #include <iostream> using namespace std;int main() {shared_ptr<int> sh_ptr1 std::make_shared<int>(5);shared_ptr<int>…

【c++基础】求细胞数量

说明 一矩形阵列由数字 0 到 9 组成&#xff0c;数字 1 到 99 代表细胞&#xff0c;细胞的定义为沿细胞数字上下左右若还是细胞数字则为同一细胞&#xff0c;求给定矩形阵列的细胞个数。 输入数据 第一行两个整数代表矩阵大小 n 和 m。 接下来 n 行&#xff0c;每行一个长度…

kubernetes部署控制器Deployment

一、概念 在学习rc和rs控制器资源时&#xff0c;这两个资源都是控制pod的副本数量的&#xff0c;但是&#xff0c;他们两个有个缺点&#xff0c;就是在部署新版本pod或者回滚代码的时候&#xff0c;需要先apply资源清单&#xff0c;然后再删除现有pod&#xff0c;通过资源控制&…

华为 obs相关

obd配置 hw-obs:endpoint: ak: sk: bucketname:获取桶列表 public class HwObsController {Value("${hw-obs.ak}")private String hwObsAk;Value("${hw-obs.sk}")private String hwObsSk;Value("${hw-obs.endPoint}")private String hwObsEndp…

惯性测量单元(IMU)CAN接口:M-G552PJ7

M-G552PJ7是一种小形状因子惯性测量单元&#xff08;IMU&#xff09;&#xff0c;具有6个自由度&#xff1a;三轴角率和线性加速度&#xff0c;利用高精度补偿技术提供高稳定性和 高精度的测量能力。 各种校准参数存储在IMU的内存中&#xff0c;并在IMU的电源被打开后自动反映在…

python项目练习-1

获取无忧书城的小说内容&#xff01; import requests # 导入请求包 from lxml import etree # 导入处理xml数据包url https://www.51shucheng.net/wangluo/douluodalu/21750.html book_num 1 # 文章页数 download_urls [] # 定义一个空列表&#xff0c;表示我们下载过小…

如何使用bof-launcher在CC++Zig应用程序中执行Beacon对象文件(BOF)

关于bof-launcher bof-launcher是一款针对Beacon对象文件&#xff08;BOF&#xff09;的安全测试工具&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以轻松在C/C/Zig应用程序中执行Beacon对象文件&#xff08;BOF&#xff09;。 Cobalt Strike 4.1于2020年6月25日发…

Checkpoint机制和生产配置

1.前提 在将Checkpoint之前&#xff0c;先回顾一下flink处理数据的流程&#xff1a; 2. 概述 Checkpoint机制&#xff0c;又叫容错机制&#xff0c;可以保证流式任务中&#xff0c;不会因为异常时等原因&#xff0c;造成任务异常退出。可以保证任务正常运行。 &#xff08;1&…

全志ARM-修改开发板内核启动日志

修改开发板内核日志输出级别&#xff1a; 默认输出级别为1&#xff0c;需要用超级用户权限修改 sudo vi /boot/orangepiEvn.txt 把第一行内核启动输出权限改为7&#xff0c;第二行把输出方式该为“serial”串口输出

后端面试真题--计算机基础篇

计算机基础 1、计算机网络&#xff08;常考&#xff09;2、操作系统3、数据结构4、Linux二级目录三级目录 1、计算机网络&#xff08;常考&#xff09; 1、介绍一下网络七层架构&#xff0c;TCP/IP的四层架构&#xff0c;每一层都有什么协议 2、讲讲TCP/IP的流量控制和拥塞控制…

前端实现将二进制文件流,并下载为excel文件

目录 一、关于二进制流二、项目实践三、常见问题及解决 一、关于二进制流 含义&#xff1a;二进制流是一种计算机文件格式&#xff0c;它的数据以二进制形式存储&#xff0c;与文本文件不同。 二进制文件可以包含任意类型的数据&#xff0c;例如&#xff1a;图像、音频、视频…

机器学习笔记 - scikit-learn中的metric参数和metric_params参数如何使用?

在 scikit-learn 库中的一些算法里面,这里是指需要使用距离度量或相似度度量的算法,这里拿KNeighborsclassifier举例来说,会有metric参数,这个参数用于指定距离度量方法。这个参数有多个可选项,常用的有以下几种: 1.euclidean:欧氏距离。这是默认的距离度量方法。 2.manha…

c++输入年月日,计算是该年的第几天

直接把每个月的天数存到数组直接相加会很方便&#xff0c;不用过多的判断。 注意&#xff1a;润年判断方法&#xff08;可以被4整除但不能被100整除&#xff0c;或者可以被400整除&#xff09; #include <iostream> using namespace std;int main() {int year,month,da…

PyCharm 中的特殊标记

在使用 PyCharm 开发 Python 项目的时候&#xff0c;经常会有一些特殊的标记&#xff0c;有些是 IDE 提示的代码规范&#xff0c;有些则为了方便查找而自定义的标记。 我在之前写过一些关于异常捕获的文章&#xff1a;Python3 PyCharm 捕获异常报 Too broad exception clause …

LeetCode——滑动窗口

滑动窗口 包含特定元素的子串&#xff08;要匹配到的目标&#xff09;&#xff0c;或最长[这个好像没啥意思]、或最短、或等长 思考&#xff1a;&#xff08;暂时感受&#xff09; 1&#xff09;什么时候扩充窗口——串没走完就得扩呀&#xff1b; 2&#xff09;窗口扩充后…

2024年Java JDK下载安装教程,附详细图文

文章目录 简介一、JDK的下载二、JDK的安装三、设置环境变量(不一定需要执行&#xff09; 简介 博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f34…

4D Solver

好的,我将详细解释一下4D Solver是如何将视频、深度数据与MetaHuman人物表情网格数据相结合的: 4D Solver实际上是一种先进的计算机视觉算法,它能将2D视频图像数据与3D几何网格数据相匹配和对齐。 具体过程分为以下几个步骤: 标定(Calibration) 首先需要对捕捉设备(iPhone或…

Golang操作Redis

一. Redis介绍 1.1 简介 Redis是完全开源免费的&#xff0c;遵循BSD协议&#xff0c;是一个高性能的key-value数据库。 Redis与其它的key-value缓存产品有以下三个特点&#xff1a; Redis支持数据持久化&#xff0c;可以见内存中的数据报错在磁盘中&#xff0c;重启的时候可以…

python hashlib模块介绍

hashlib是Python标准库中的一个模块,用于提供常见哈希函数的接口。它可以用来计算数据的哈希值,包括MD5、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512等算法。 下面是hashlib模块的一些常见方法和特点: 哈希对象的创建:使用hashlib模块的相应函数创建哈希对象,例如md5()、…

助力实现更可持续未来的智能解决方案:AI如何改变世界

人工智能已然成为今年的热门话题。由于生成式AI应用的快速采用&#xff0c;新闻头条充斥着有关AI如何彻底改变我们的政策制定、就业和经济走向的预测。您知道AI也是我们应对各种可持续发展挑战的先锋吗&#xff1f;AI通过分析大量数据&#xff0c;并提供有用的见解和工具&#…