python输出数字三角形_Python|2020蓝桥杯之数字三角形

这是一篇关于使用Python解决动态规划问题的文章,详细介绍了如何找到数字三角形中最长路径的和。通过构建dp数组并处理边界条件,最终找到满足路径约束的最大和。文章提供了一段Python代码示例来解决这个问题。
摘要由CSDN通过智能技术生成

题目描述

上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。

对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最

大的和。

路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右

边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。

【输入格式】

输入的第一行包含一个整数 N (1 < N ≤ 100),表示三角形的行数。下面的

N 行给出数字三角形。数字三角形上的数都是 0 至 100 之间的整数。

【输出格式】

输出一个整数,表示答案。

【样例输入】

5

7

3 8

8 1 0

2 7 4 4

4 5 2 6 5

【样例输出】

27

题目分析及解题思路

这是一道标准的动态规划题目,我们首先用0补全完整的数组dp(如下所示),将数据放入数组对应的下标当中,然后,然后用dp数组去记忆从上到下路径上的值,最后再在向左下走的次数与向右下走的次数相差不能超过 1这个条件下取得的最大值,重点在于我们不能局限于这个条件,我们只需要判断我们所取值的底层的下标于顶层的下标是否相差绝对值<=1即可;

补全数组:在补全数组的过程中存在一个规律,就是第一个数据即顶部数据(该处以7为例),下标应该为N-1,故该处的下标为4;其

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值