我写了一些代码来计算三角形的最大路径和。这是三角形:
75
95 64
17 47 82
18 35 87 10
20 04 82 47 65
所以这个三角形的最大路径和是:75+95+82+87+82 = 418
这是我计算它的代码:
lst = [[72],
[95,64],
[17,47,82],
[18,35,87,10],
[20,4,82,47,65]]
something = 1
i = 0
mid = 0
while something != 0:
for x in lst:
new = max(lst[i])
print(new)
i += 1
mid += new
something = 0
print(mid)
正如你所看到的,我把三角形的每一项都放在列表中,并把列表放在(头(列表中。这不是很多数字,但如果我有一个更大的三角形呢?手动操作是一项艰巨的工作。所以我的问题是:如何将三角形中的数字高效地放在头列表中的子列表中
如果输入以包含三角形中行数的一行开始,然后是该行上的所有数字,则读取第一个数字以获得range()
中的限制。然后使用列表理解来创建子列表列表。
rows = int(input())
lst = [list(map(int, input().split())) for _ in range(rows)]
例如,要读取示例三角形,输入为:
5
75
95 64
17 47 82
18 35 87 10
20 04 82 47 65