题库首页 › 蓝桥杯大赛(Python) › 题目 8775

提示信息: 数字塔是由 N 行数堆积而成,最顶层只有一个数,次顶层两个数,以此类推。 相邻层之间的数用线连接,下一层的每个数与它上一层左上方和右上方的数连接 (左上方或右上方没有数则不需要连接)。 编程实现: 有一个 N 行 (0≤N≤50) 的数字塔,小蓝想要从最顶层开始,沿着线层一层向下移动,移动到最底层。小蓝想找出一条移动路径,使得路径上的数之和最大 (包含顶层和底层的数),请计算出最大的和是多少。 例如: N=5,5 层的数字塔,每层的数如下图所示: 从顶层数为 2 到底层数为 15 的路径上的数之和最大,最大和为 48。路径为: 2+3-18-10- 15。 输入描述 第一行输入一个正整数 N (2<N<50) ,表示数字塔的层数接下来输入 N 行,其中第一行为一个正整数,接下来每行的正整数比上一行多一个,每行的正整数之间以一个英文逗号隔开 (1<1 整数<1000) 输出描述 输出一个整数,表示从数字塔最顶层移动到最底层的路径上的数之和的最大值 【输入样例】 5 2 3,12 18,8,3 5,10,13,2 4,15,7,6,8 【输出样例】 48

提示信息: 数字塔是由 N 行数堆积而成,最顶层只有一个数, 题目配图提示信息: 数字塔是由 N 行数堆积而成,最顶层只有一个数, 题目配图

正确答案:数字塔自底向上DP:\nn=int(input());a=[list(map(int,input().split(',')))for _ in range(n)]\nfor i in range(n-2,-1,-1):\n for j in range(i+1):a[i][j]+=max(a[i+1][j],a[i+1][j+1])\nprint(a[0][0])

试卷来源:202310(第15届)蓝桥杯Python编程青少组(选拔赛)真题

本卷相关题目

在线做题 同科目题库