信息学奥赛一本通1258:【例9.2】数字金字塔

动态规划——1258:【例9.2】数字金字塔 1258:【例9.2】数字金字塔 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 12475 通过数: 7082 【题目描述】 观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以从当前点走到左下方的点也可以到达右下方的点。 在上面的样例中,从13到8到26到15到24的路径产生了最大的和86。 【输入】... 阅读详情

1258:【例9.2】数字金字塔


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 44051     通过数: 26272

【题目描述】

观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以从当前点走到左下方的点也可以到达右下方的点。

在上面的样例中,从13到8到26到15到24的路径产生了最大的和86。

【输入】

第一个行包含R(1≤R≤1000),表示行的数目。

后面每行为这个数字金字塔特定行包含的整数。

所有的被供应的整数是非负的且不大于100。

【输出】

单独的一行,包含那个可能得到的最大的和。

【输入样例】

5
13
11 8
12 7  26
6  14 15 8
12 7  13 24 11

【输出样例】

86

动态规划,我用的是从下往上推(逆推),也可以从上往下推(顺推)

逆推:

#include<bits/stdc++.h>
using namespace std;
int n,a[1001][1001];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=i;j++)
		{
			cin>>a[i][j];
		}
	}
	for(int i=n-1;i>=1;i--)
	{
		for(int j=1;j<=i;j++)
		{
			a[i][j]=a[i][j]+max(a[i+1][j],a[i+1][j+1]);
		}
	}
//	cout<<"max="<<a[1][1];
	cout<<a[1][1];
}

顺推:

#include<bits/stdc++.h>
using namespace std;
int n,a[1001][1001],cnt;
//int f[1001][1001];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=i;j++)
		{
			cin>>a[i][j];
			a[i][j]=max(a[i-1][j],a[i-1][j-1])+a[i][j];
			cnt=max(cnt,a[i][j]);
		}
	}
//	f[1][1]=a[1][1];
//	for(int i=1;i<=n;i++)
//	{
//		for(int j=1;j<=i;j++)
//		{
//			f[i][j]=max(f[i-1][j],f[i-1][j-1])+a[i][j];
//			cnt=max(cnt,f[i][j]);
//		}
//	}
	cout<<cnt;
}

顺推也可以把注释的地方解开再把13和14行注释,我这样做可以节约一个1001*1001的int数组空间

1258:【例9.2】数字金字塔 题目描述 观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以从当前点走到左下方的点也可以到达右下方的点。 在上面的样例中,从13到8到26到15到24的路径产生了最大的和86。 【输入】 第一个行包含R(1≤R≤1000),表示行的数目。 后面每行为这个数字金字塔特定行包含的整数。 所有的被供应的整数是非负的且不大于100。 【输出】 单独的一行,包含那个可能得到的最大的和。 【输入样例】 5 13 11 8 12 7 26 6 14 15 8 1. 阅读详情

相关推荐

C++信息学奥赛一本通1258题解

C++信息学奥赛一本通1258题解

Asad_Yuen的博客 903

信息学奥赛一本通1258:【例9.2】数字金字塔题解

样例金字塔可以看成下面的形式方便使用数组来处理:1311 8这样的话题目表述的左下和右下就转换成了下方和右下的数据。如果我们从顶部往下计算,很明显后面的数据会影响计算结果,也就是有后效性!显然不能使用动态规划,解决后效性的一般方式就是改变计算顺序,也就是从下往上计算。从下往上的计算方式我们可以把下一层看成是上一层的子问题,只需要取出下一层的最大值累加在上一层即可,通过不断迭代的方式计算到最顶层,那个值就是整个金字塔的最大值。

笨笨鸟 1666

信息学奥赛一本通(基础算法与数据结构-题解汇总目录)

信息学奥赛一本通(基础算法与数据结构-题解汇总)

lybc2019的博客 1万+

信息学奥赛一本通题目解析:1258:【例9.2】数字金字塔

在这个问题中,已知的信息是金字塔的底部,未知的信息是到达顶部的路径和。如果我们从顶部开始计算,就需要考虑所有可能的路径,这会导致大量的重复计算和更高的时间复杂度。然后,我们从金字塔的底部开始向上计算,每一步我们都保留到达该位置的最大路径和。在开始时存储了金字塔该位置上的数字,但在动态规划的过程中,它被更新为从该位置到底部的最大路径和。在上面的样例中,从1313到88到2626到1515到2424的路径产生了最大的和8686。就存储了从金字塔顶部到底部的最大路径和。单独的一行,包含那个可能得到的最大的和。

lan_in的博客 1181

85、1258:【例9.2】数字金字塔-2020.03.02a.pdf

85、1258:【例9.2】数字金字塔-2020.03.02a

Linux 音频驱动(六) ALSA音频驱动之PCM Write数据传递过程

目录1. 前言2. PCM Data Flow3. 总结 1. 前言 本文,我们将以回放(Playback,播放音频)为例,讲解PCM Data是如何从用户空间到内核空间,最后传递到Codec。 在Linux 音频驱动(一) ASoC音频框架简介中,我们给出了回放(Playback)PCM数据流示意图: 对于Linux来说,由于分为 user space 和kernel space,而且两者之间不能随便互相访问。因此用户如果播放音频,则需要调用copy_from_user()将用户数据从user spa

_Modest_的博客 1万+

信息学奥赛一本通 1258:【例9.2】数字金字塔

【题目链接】 ybt 1258:【例9.2】数字金字塔 【题目考点】 1. 记忆化搜索 2. 动态规划基本型 【解题思路】 思路1:一般深搜(非正确解) 每到一个位置,更新加和,向左下,右下两个方向搜索。 搜索到最后一行,判断当前加和是否大于最大加和,更新最大加和。 该搜索过程实际上对很多问题重复计算了很多次,因而时间复杂度较高。只能解决小规模的问题,如果提交该代码的话,必定超时! #include<bits/stdc++.h> using namespace std; #define N 10

君义NOIP的博客 2944

第 4 课 树莓派5的换源与中文输入法

树莓派换源、中文输入法的安装

嵌入式老牛的博客 2288

信息学奥赛一本通——1258:【例9.2】数字金字塔

动态规划

蒟蒻の博客 724

用友U8 API 二次开发:WebService封装7个核心DLL引用与U8Login登录避坑

本文详细介绍了用友U8 API二次开发中的WebService封装与U8Login登录优化实践。通过7个核心DLL的正确引用、U8Login登录机制的深度解析及IIS环境下的特殊处理方案,为开发者提供了一套高可用性的通用解决方案,助力企业实现ERP系统的高效集成与数字化转型。

weixin_42524171的博客 505

Modem2G/3G/4G/5G:RFFE Driver(射频前端驱动):高通平台GRFC配置方法

文 | GentlemanTsao 文章目录前言1.什么是GRFC2.GRFC的配置流程概览3.msm_sig_info的配置与分析msm_sig_info Table位置:msm_sig_info Table示例:Table元素解读:rfc_msm_sig_info_type结构体signal typemsm_gpio |grfc_num:GPIO到GRFC的映射output_typefunction_select4._sig_cfg的配置与分析_sig_cfg table位置:_sig_cfg tabl

GentelmanTsao的博客 7312

【信息学奥赛一本通 C++题解】1258:【例9.2】数字金字塔

信息学奥赛一本通 动态规划基本模型

信奥营 1002

keil自动分配SDRAM空间设置使用

1.修改.sct文件。

qizhi321123的博客 1404

信息学奥赛一本通(1258:【例9.2】数字金字塔)

1258:【例9.2】数字金字塔 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 20019 通过数: 11518 【题目描述】 观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以从当前点走到左下方的点也可以到达右下方的点。 在上面的样例中,从13到8到26到15到24的路径产生了最大的和86。 【输入】 第一个行包含R(1≤R≤1000),表示行的数目。 后面每行为这个数字金字塔特定行...

1171

走向审计4.0:内部审计数字化转型的路径与方法

企业的内部审计人员可以以数字化为手段,建立内部审计新生态,在数字化过程中引进战略审计、服务审计、开放审计、敏捷审计、数字审计、智慧审计等理念、方法和工具,完成数智生态审计转型。内部审计的审计对象远比国家审计和公众审计丰富和多元化,理论上企业经营管理和日常操作的各个方面都可以成为内部审计的对象,此外还可以开展独立咨询活动。由于内部审计的数字化或数字化的内部审计是实现审计数字化转型的必要条件,是实现“数字引领、数据强审”目标的核心手段,因此企业内部审计部门势必要投入足够的资金和人才来打造一支数字化审计新队伍。

一键难忘的博客 6737

一文掌握 MongoDB 详细安装与配置(Windows / Linux / macOS 全平台)

本文详细介绍了MongoDB社区版7.0+在Windows、Linux和macOS三大操作系统上的完整安装、配置与安全加固流程。主要内容包括:各平台推荐安装方式(Windows使用MSI安装包、Linux通过官方仓库、macOS通过Homebrew)、基本配置参数说明、服务启动方法以及关键安全措施(如创建管理员用户和启用身份验证)。文章还提供了系统最低要求、下载地址、数据目录设置建议以及生产环境使用注意事项,适合开发、测试及生产环境部署参考。

数据知道的博客 6709

信息学奥赛一本通:1259:【例9.3】求最长不下降序列 1258:【例9.2】数字金字塔

信息学奥赛一本通:1259:【例9.3】求最长不下降序列 1258:【例9.2】数字金字塔

ffsdfg的博客 1027

2023年全国职业院校技能大赛“信息安全管理与评估”-真题——赛题题目+答案解析

2023年全国职业院校技能大赛“信息安全管理与评估”-真题——赛题题目+答案解析

君逍遥o 5990

信息学奥赛一本通 1258:【例9.2】数字金字塔 动态规划基本型

观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以从当前点走到左下方的点也可以到达右下方的点。时间限制: 1000 ms 内存限制: 65536 KB。在上面的样例中,从13到8到26到15到24的路径产生了最大的和86。第一个行包含R(1≤R≤1000),表示行的数目。后面每行为这个数字金字塔特定行包含的整数。所有的被供应的整数是非负的且不大于100。单独的一行,包含那个可能得到的最大的和。1258:【例9.2】数字金字塔。

长春高老师编程 746

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

信息学奥赛一本通:1258:【例9.2】数字金字塔 线性DP

信息学奥赛一本通:1258:【例9.2】数字金字塔 线性DP

hanghang20030820的博客 269

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

《信息学奥赛一本通 编程启蒙C++版》3386-3390(5题)

《信息学奥赛一本通 编程启蒙C++版》3386-3390(5题)

青少年趣味编程 1725

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

3386:【例67.3】 数字金字塔

3386:【例67.3】 数字金字塔

青少年趣味编程 761

信息学奥赛一本通1258:数字金字塔

因为我们做题的时候往往会先选大的,这样和就会更大的,但是这样只能保证局部最优解,但是没办法保证全局最优解(贪心的思想)。动态规划,英文简称dp,主要思想:先列出各种可能的局部解,再根据某种判定条件,舍弃肯定得不到最优解的局部解,在每一步都经过筛选,以。dp[i-1][j],dp[i-1][j-1]取大值加上`a[i][j]` -->状态转移方程式。这一道题大家可以自己先在纸上画一画,不出意外的话,你的答案应该是这样的。注意dp写代码索引都从1开始,不要用0,不然又能索引会有-1的情况。所以到底该怎么做呢?.

m0_46259298的博客 857

信息学奥赛一本通1258数字金字塔:动态规划入门与滚动数组优化

在算法竞赛与C++编程中,动态规划常用于把多阶段决策转化为可复用的状态计算。其核心原理是最优子结构与无后效性:每个状态只依赖相邻层的有限状态,通过状态转移方程逐步递推进而得到全局最优。相比枚举所有路径,它能显著降低时间复杂度,并广泛用于网格路径、序列决策和资源分配等场景。信息学奥赛一本通1258的“数字金字塔”正是这一思想的经典入口:从塔尖到底部的最大路径和,可用自底向上递推或滚动数组优化,把递归直觉平稳过渡到DP工程写法。理解状态定义与边界处理后,同类数塔、方格取数问题也能顺势掌握。

weixin_33980459的博客 360

第67课 递推 《信息学奥赛一本通 编程启蒙 C++版》

第67课 递推 《信息学奥赛一本通 编程启蒙 C++版》

青少年趣味编程 640
上一篇: 信息学奥赛一本通1311:【例2.5】求逆序对
下一篇: 信息学奥赛一本通1314:【例3.6】过河卒(Noip2002)
Jsjjsnmsk
博客等级 码龄4年 548粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值