【动态规划】数字三角形

数字三角形问题(动态规划) G . 数字三角形问题 Description 给定一个由nn行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。 对于给定的由nn行数字组成的数字三角形,计算从三角形的顶至底的路径经过的数字和的最大值。 Input 第1 行是数字三角形的行数nn,1≤n≤1001≤n≤100。接下来nn行是数字三角形各行中的数字。所有数字在0..99之... 阅读详情

题目描述

考虑在下面被显示的数字金字塔。
写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大。
每一步可以走到左下方的点也可以到达右下方的点。
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
在上面的样例中,从7 到 3 到 8 到 7 到 5 的路径产生了最大和:30
 

输入

第一个行包含 R(1<= R<=1000) ,表示行的数目。
后面每行为这个数字金字塔特定行包含的整数。
所有的被供应的整数是非负的且不大于100。

输出

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

样例输入

5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5
 

样例输出

30

其实这道题本身很简单

方法:

还是记忆化dg,在返回时顺便记录下

还是那句话:上代码!!!

#include<bits/stdc++.h>
using namespace std;
int n,a[1001][1001],f[1001][1001],ans;

int dg(int x,int y)
{
	if(x==n-1)
	return a[x][y];
	else
	{
		if(f[x+1][y]==-1&&f[x+1][y+1]==-1)
		{
			f[x][y]=a[x][y]+max(dg(x+1,y),dg(x+1,y+1));
			return f[x][y];
		}
	
		if(f[x+1][y]!=-1&&f[x+1][y+1]==-1)
		{
			f[x][y]=a[x][y]+max(f[x+1][y],dg(x+1,y+1));
			return f[x][y];
		}
		
		if(f[x+1][y]==-1&&f[x+1][y+1]!=-1)
		{
			f[x][y]=a[x][y]+max(dg(x+1,y),f[x+1][y+1]);
			return f[x][y];
		}
		
		if(f[x+1][y]!=-1&&f[x+1][y+1]!=-1)
		{
			f[x][y]=a[x][y]+max(f[x+1][y],f[x+1][y+1]);
			return f[x][y];
		}
	}
	
}

main()
{
	freopen("numtri.in","r",stdin);
	freopen("numtri.out","w",stdout);
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<=i;j++)
		{
			scanf("%d",&a[i][j]);
			f[i][j]=-1;
		}
	}
	printf("%d",dg(0,0));
}

 

数字三角形 动态规划 C++ 数字三角形 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或者右下走。只需要求出这个最大和即可,不必给出具体路径。 三角形行数大于1小于等于100,数字为0-99 直接递归的话时间复杂度太大,这里面有很多重复计算的点,所以创建一个和三角形一样大的二维数组,每当计算过这... 阅读详情

相关推荐

Zephyr、FreeRTOS 和 RT-Thread

你是…更适合用嵌入式新手,刚接触 RTOSFreeRTOS(入门简单)IoT 项目开发,需要 BLE/WiFi/MQTTZephyr(协议全)想快速构建可部署的产品Zephyr(模块统一)只做单个任务或简单状态机控制FreeRTOS(轻量)做平台化、持续集成、自动测试Zephyr(CI 支持强)

is0815的博客 2243

数字金字塔

题目描述 考虑在下面被显示的数字金字塔。 写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大。 每一步可以走到左下方的点也可以到达右下方的点。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 在上面的样例中,从7 到 3 到 8 到 7 到 5 的路径产生了最大和:30 输入 第一个行包含 R(1<= R<=1000) ,表示行的数目。 后面每行为这个数字金字塔特定行包含的整数。 所有的被供应的整数是非负的且不大于100。 输出 单独的一行包含那个可能得到的最大的和

sfutd的博客 389

使用 Unity Sentis 和 Compute Shader,det_10g.onnx 进行高效人脸五官定位

在计算机视觉领域,人脸五官定位是一个重要的任务。本文将介绍如何使用 Unity Sentis 和 Compute Shader,结合模型,实现高效的人脸五官定位。我们将详细讲解每一步骤,并提供完整的代码示例。

m0_55632444的博客 2393

【USACO 1.5.1】数字金字塔

【题目描述】 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 在上面的样例中,从7 到 3 到 8 到 7 到 5 的路径...

Gregory99174的博客 951

DFT实战:如何用Synopsys工具搞定多时钟域Scan Chain设计(附避坑指南)

本文详细解析了使用Synopsys DFT Compiler工具链实现多时钟域Scan Chain设计的全流程,包括时钟混合策略、跨时钟域平衡技巧和实战脚本剖析。通过量产验证的工程实践方案,帮助DFT工程师有效解决复杂SoC设计中的Scan Chain挑战,提升测试效率和质量。

mm9012的博客 1033

openEuler Embedded新增软件包及在线安装软件方法

openEuler Embedded是基于Yocto构建的嵌入式操作系统,默认不包含dnf/apt软件包管理器,主要使用rpm格式。新增软件需通过manifest文件检查是否集成,未集成则需适配新配方。对于在线安装需求,可采用轻量级容器方案:通过isulad运行openEuler服务器版容器镜像,在容器内使用dnf命令安装软件(如Nginx),实现服务器生态兼容。部署前提包括设备支持、存储空间(≥10GB)和网络连接,需先安装并启动isulad服务。这种方法结合了嵌入式系统的轻量化特性和服务器系统的软件管理

专注嵌入式开发与 Linux 系统应用实战,分享芯片驱动、设备调试、系统工具开发干货。 1225

C语言(PTA习题)7-3 数字三角形

#include <stdio.h> #include <stdlib.h> int main() { int n,i,j,s; scanf("%d",&n); for(i=1,s=0; i<=n; i++) { for(j=1; j<=n-i+1; j++) { printf("%4d",s+j); } s=s+j-1; pr...

yiyiqianxixunxun的博客 2685

ContextCapture系列教程(三):大疆精灵4RTK版无人机POS数据提取、处理(处理后勉强达到免相控要求)

大疆精灵 Phantom 4 RTK于2018年发布,是大疆为高精度建图与精准飞行设计的行业级无人机,在精灵4无人机外形的基础上,机身增加了RTK模块,可以实现高精度 RTK 定位导航,相机与 RTK 系统采用微秒级时间同步,可以通过app 进行航线规划飞行

pausau的博客 1万+

【2020蓝桥杯省赛】【动态规划】数字三角形(超详解!)

目录 题目 题目链接 输入描述 输出描述 测试样例 输入样例 输出样例 提交结果截图 详细分析 法1(画图):​ 法2(代码): 带详细注释的源代码 题目 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。 题...

NOT_TODAY1的博客 1万+

4 屏 + 8 摄像头一开,谁在悄悄拖慢你的座舱域控?

如果你觉得座舱卡顿:❌ 别第一反应怪 SoC❌ 别盲目堆算力。

weixin_43199439的博客 148

FPGA JTAG接口设计全解析

JTAG是FPGA开发的核心接口,主要用于代码下载和在线调试。14-pin设计中包含TCK、TMS、TDI、TDO四个关键信号,采用信号-地布局增强抗干扰能力,TCK建议串联电阻。10-pin设计需注意转接适配,并推荐使用RCLAMP0524P等低电容TVS二极管进行ESD防护。两种接口设计都强调信号完整性和可靠性,建议PCB布局时保持JTAG走线短且预留调整空间。

在读研究生,FPGA电路设计与功能开发。 2181

P1216 [USACO1.5][IOI1994]数字三角形 Number Triangles 【DP】

题目描述 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 在上面的样例中,从 7→3→8→7→57 \to 3 \to 8 \to 7 \to 57→3→8→7→5 的路径产生了最大 输入格式 第一个行一个正整数 rrr ,表示行的数目。 后面每行为这个数字金字塔特定行包含的整数。 输出格式 单

ln2037的博客 823

Harness Engineering:让Coding Agent真正落地生产

本文将带你系统性地了解如何让Coding Agent真正落地生产,核心是依托(全球领先的持续交付、云成本管理、 feature flagging、安全治理一体化平台),结合企业级AIDD(AI-Driven Development)的工程化实践,构建一套可信赖、可观测、可扩展、可治理的Coding Agent落地体系。核心概念与理论基础:什么是Coding Agent?它和普通的AI代码补全工具(比如GitHub Copilot)有什么区别?什么是Harness Engineering?

移动开发前沿的博客 455

数字三角形问题 动态规划

数字三角形问题 动态规划 OJ 问题:Triangle(参见 http://poj.org/problem?id=1163) 题意:在数字三角形上寻找一条沿相邻顶点从顶到底走的路径,使路径上的数字和最大。 输入:三角形高度 n,数字三角形数值。 输出:最大数字和。 解决思路: 由下而上逐个计算个点到最低端的最大路径,因为最大路径的子路径也一定是最大路径,而且右下而上只有两个方向,一个是正上方一个是右上方 比如4到达最顶端的最大路径的子路径一定包含2和7,而2到顶端的最大路径一定包含8或者1,以此类推 我们

pjh88的博客 1059

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

动态规划——数字三角形

学习算法,个人觉得还是对照着例题来理解效果做好,算法概念太学术味太浓,个人不太喜欢。今天介绍一个动态规划入门例题。这道题来自北大的POJ。题目如下: 数字三角形(POJ1163) 在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或 右下走。只需要求出这个最大和即可,不必给出具体路径。 三角形的行数大...

远方的博客 752

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

动态规划算法题解:数字三角形

在计算过程中,我们不仅可以计算每个位置的最大路径和,还可以追踪最优解的路径,即追踪每个位置的最大路径是通过哪个方向(左斜线或右斜线)到达的。通过这种方式,我们可以重构出实际的最大路径。要求我们计算出从三角形的顶点到底部的一条路径,使得路径经过的数字总和最大。所以,要先将先前计算出来的结果进行保存,并在接下来的计算中充分利用已有的结果,从而避免重复的计算,达到提高效率的目的。的顶至底的一条路径(每一步可沿左斜线向下或右斜线向下),使该路径经过的数字总和最大。:从顶到底的一条路径,使得路径上经过的数字和最大。

Huazzi的博客 2133

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

动态规划解决数字三角形

美图: 问题描述:          7         3 8        8 1 0       2 7 4 4      4 5 2 6 5       给定一个数字三角形,如上,在这个三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或右下走。求出这个最大和。 一. 我们先考虑使用递归来解决。 用二维数组D来存放数字三角形,问题转换如下: ...

专注技术 7148

动态规划——数字三角形模型

给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。摘花生问题考虑的是最大值,本问题考虑的是最小值,为了避免边界的影响,需要将dp所有位置上的值初始化为正无穷。:两条路同时走,步数为k,第一条路在纵向上走到i,第二条路在纵向上走到j时的所有路线上数值和的最大值。注意t的取值,如果i ==j说明两条路线到达的同一位置,t只取。输出一个整数,表示最大的路径数字和。的所有路线上的费用的最小值。

m0_70897036的博客 1268

算法 -- 数字三角形之动态规划

好久没有好好写算法啦,因此今天晚上就思考实现老师说的一道算法题目: 用动态规划求解数字三角形. 下面简单描述下题目含义: 数字三角形中的数字要求为不超过100的非负整数.题目规定从最顶层开始往下走,选择一条路径,这条路径要求每一步沿着左斜线或者右斜线走,并且路径上的数字之和为最大值. 例如下面这样一个三角形: 1. 7 2. 3 8 3. 8 1 0 4. 2 7 7

LemonLee‘s Blog 4405

java动态规划之数字三角形_动态规划 数字三角形

问题描述在上面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大。路径上的每一步都只能往左下或右下走。只需要求出这个最大和即可,不必给出具体路径。三角形的行数大于1小于等于100,数字为 0 - 99输入格式:5 //三角形行数。下面是三角形73 88 1 02 7 4 44 5 2 6 5要求输出最大和Sample Output30整体思路仍然是递推求解。用D( r, j)...

weixin_35903340的博客 496

动态规划——数字三角形问题

B——数字三角形问题 题目 #include<stdio.h> // 动态规划法求: 数字三角形—1730 int main() { int n,i,j,D[101][101], a[101][101]; scanf("%d",&n); for (i=1; i<=n; i++) // 输入三角形 for(j=1; j&lt...

wjt_1025的博客 316

用动态规划算法编程实现数字三角形问题

用动态规划算法编程实现数字三角形问题问题

weixin_56866112的博客 3500
上一篇: 【动态规划】背包问题2
下一篇: 【搜索与回溯算法】泡泡龙
开朗的坤坤
博客等级 码龄5年 11粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值