首页 > 试题广场 >

数字三角形

[编程题]数字三角形
  • 热度指数:365 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大
        7
      3  8
    8  1  0
  2  7  4  4
4  5  2  6  5


输入描述:
第一行包含整数 n,表示数字三角形的层数。

接下来 n 行,每行包含若干整数,其中第 i 行表示数字三角形第 i 层包含的整数。


输出描述:
输出一个整数,表示最大的路径数字和。
示例1

输入

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

输出

30

备注:
数据范围:
1≤n≤500,
−10000≤三角形中的整数≤10000
n=int(input())

sjx=[]

for _ in range(n):
    tmp = list(map(int,input().split()))
    sjx.append(tmp)

for i in range(n-2,-1,-1):
    for j in range(len(sjx[i])):
        sjx[i][j]+=max(sjx[i+1][j],sjx[i+1][j+1])

print(sjx[0][0])

发表于 2025-12-16 14:04:30 回复(0)