洛谷 P1216 数字三角形

news/2024/10/4 9:37:08

题目链接:数字三角形



思路

       dp:金字塔顶的元素为起点,金字塔每行的最左侧数字只能从上一层的最左侧数字到达,如7 -> 3 -> 8 -> 2 -> 4,这些数字中的每一个(除起点7外)都只能从上一层的最左侧数字到达,递推公式为dp[i][1] = max(dp[i][1], num[i][1] + dp[i - 1][1],最右侧数字同理,递推公式为dp[i][i] = max(dp[i][i], num[i][i] + dp[i - 1][i - 1],而中间的数字可以由上层相邻的两个数字到达,递推公式为dp[i][j] = max(dp[i][i], num[i][j] + dp[i - 1][j - 1], num[i][j] + dp[i - 1][j]
       优化:由于存储时使用的边界值为1,所以金字塔的最左侧和最右侧的数字的递推公式可以统一为dp[i][j] = max(dp[i][i], num[i][j] + dp[i - 1][j - 1], num[i][j] + dp[i - 1][j],然后发现每次递推时只需要使用两层的数据,所以将空间复杂度优化为O(2 * n),然后每次使用第一层计算出第二层之后,第一层的dp数组就不会再被使用,此时将第二层的dp数组赋值给第一层的dp数组,再用此时的第一层的dp数组计算出第二层的dp数组,一直递推即可得到第r层的dp数组,然后再对第r层的dp数组取最大值即可得到结果。
image

代码

#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 1e5 + 10;
int dp[2][N], num[N];
int main() {int r;cin >> r;for (int i = 1; i <= r; i++) {for (int j = 1; j <= i; j++) {cin >> num[j];}for (int j = 1; j <= i; j++) {dp[1][j] = num[j] + max(dp[0][j], dp[0][j - 1]);}swap(dp[0], dp[1]);}int res = 0;for (int i = 1; i <= r; i++) {res = max(res, dp[0][i]);}cout << res  << endl;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Qt/C++音视频开发77-获取本地有哪些摄像头名称/ffmpeg命令日志方式

一、前言 上一篇文章讲使用ffmpeg函数接口去获取本地摄像头信息,这种方式只能从ffmpeg5版本开始才具备,那ffmpeg3/4只能干瞪眼?那肯定不行的,必须要想办法打通这个功能,查阅信息发现可以执行命令 ffmpeg -f dshow -list_devices true -i dummy 去获取,会通过日志打印出来…

ants:强大的高性能与低成本 Go 协程池

ants:强大的高性能与低成本 Go 协程池 原创 K8sCat 源自开发者 2024-06-16 11:28 广东 听全文源自开发者 专注于提供关于Go语言的实用教程、案例分析、最新趋势,以及云原生技术的深度解析和实践经验分享。 256篇原创内容公众号在开发高并发程序时,管理并发的能力至关重要。在…

app专项测试

过滤: 过滤表达式: domain. 展示 domain 中的资源, *.comhas-response-header. 包含指定 HTTP 响应 headeris. 表达式larger-than. 展示大于某个尺寸的资源,1000 等于 1kmethod. 指定http请求方法,比如 get 或者 postmime-type. 资源 mime 类型,比如 application/jsonsch…

goland的启动配置

参考:https://www.cnblogs.com/laijinquan/p/11968410.html 纯记录,如图

POS机SQL server数据库修复

今天这个案例,是烟酒店的老板,一台超市收银系统损坏了,资讯云的管理系统描述的就是开机进不了系统,找不到硬盘,导致数据呢无法访问,索性能进去,可能也运行不了几分钟就直接关机或者是死机,一定要保证数据万无一失,它里面有一些销售的一些记录报表,包括一些会员卡的情…

BitLocker加密分区丢失了如何恢复?

关于BitLocker加密分区丢失与恢复BitLocker是Windows操作系统提供的磁盘加密技术,可以更好的保护电脑中的数据。被BitLocker加密后的分区,在文件管理器中可以看到分区上会有个黄色的锁(如下图所示),双击该分区,会弹出窗口要求输入密码或是秘钥。输入正确的密码/秘钥后,即…

23年前的东芝硬盘能恢复出来数据吗

23年前的照片怎么导出来?是一块20g的东芝硬盘,型号是MK2023GAS。这款20g的硬盘来说简直是太熟悉了,上大学的时候购买的人生第一台笔记本电脑京东方的,里面的硬盘就是这个型号,他启蒙我认识了苍老师,在他坏了之后,又带领我走上了硬盘维修和数据恢复的道路,直到今天。先来…