蓝桥杯算法训练 数字三角形C++

本文介绍了如何解决蓝桥杯竞赛中的数字三角形问题,通过从底至顶的动态规划策略,找到经过每行时选择最大值的方法,避免了全排列计算导致的时间超限。作者分享了错误思路的反思,并提供了正确解法的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:http://lx.lanqiao.cn/problem.page?gpid=T312

在这里插入图片描述在这里插入图片描述

思路:

一开始写错了,写的是从顶至底,每次选择两个底数中较大者累加。发现错误之后再就想到列举所有情况的和再取最大值,然鹅这运算量也太大了,运行时间也会超的。没思路只好百度一下咯,艾西我怎么没想到从底至顶,之前的错误代码都不用怎么修改,换个思路就柳暗花明又一村了…所以说脑子是个好东西,可惜我没有啊…

具体解法如下:
从倒数第二行开始,将每个数与其左右两个底数中的较大值相加,同理再倒数第三行第四行…最后最顶层的值就是总和最大值。
在这里插入图片描述
注意:

  1. 二维数组,方便检索行和列 ( j<=i下三角
  2. 取两数中的最大值可直接用max(a,b)
  3. 脑子是个好东西,可惜我没有啊…

代码:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值