import os
import sys
# 请在此输入您的代码
N = eval(input())
tri = [list(map(int,input().split())) for x in range(N)]
dp = tri
for i in range(1, N):
for j in range(i + 1):
if j == 0: # 第一列
dp[i][j] = dp[i - 1][j] + tri[i][j]
elif j == i: # 最后一列
dp[i][j] = dp[i - 1][j - 1] + tri[i][j]
else:
dp[i][j] = max(dp[i - 1][j -1], dp[i - 1][j]) + tri[i][j]
print(max(dp[-1]))
我的想法是dp[i][j]用来存储到达数字三角形的(i, j)位置的最大和, 题目要求求出到达底部的最大和,那么就是dp的最后一行中最大的元素,即max(dp[-1]), 但是结果表明只有20%的用例通过。
问题出现在哪里?