0
点赞
收藏
分享

微信扫一扫

蓝桥杯—三角形

安七月读书 2022-02-07 阅读 190

题目描述

7
3 8

8 1 0

2 7 4 4

4 5 2 6 5

图一表示一个5行的数字三角形。假设给定一个n行数字三角形,计算出从三角形顶至底的一条路径,使该路径经过的数字总和最大。
每一步只能由当前位置向左下或右下。

输入

你的程序要能接受标准输入。第一行包含一个整数T,表示总的测试次数。
对于每一种情况:第一行包含一个整数N,其中1 < N < 100,表示三角形的行数。
接下来的N行输入表示三角形的每一行的元素Ai,j,其中0 < Ai,j < 100。

输出

输出每次测试的最大值并且占一行。

样例输入

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

样例输出

30

需要我们从顶向下找出使得和最大的下降和,换个思路就是从最下到上找出口使得和最大是一样的

T = int(input())
for i in range(T):
    n = int(input())
    dp = [list(map(int,input().split())) for _ in range(n)]
    for i in range(n-2,-1,-1):
        #n-2表示从第二行开始往上推
        for j in range(i+1):
            dp[i][j] += max(dp[i+1][j],dp[i+1][j+1])
    print(dp[0][0])

举报

相关推荐

0 条评论