设计一个程序用动态规划解决数组问题,平台会对你编写的代码进行测试: 测试输入三角阵: 5 9 12 15 10 6 8 2 18 9 5 19 7 10 4 16 输出示例: max=59 数值和最大的路径是:9->12->10->18->10
时间: 2023-12-10 12:37:18 浏览: 26
以下是使用动态规划解决该问题的 Python 代码:
```python
triangle = [[5],
[9, 6],
[12, 8, 4],
[15, 2, 10, 7],
[10, 18, 9, 5, 19],
[6, 7, 4, 16, 11, 10]]
n = len(triangle)
# 计算从底部到顶部的最大路径和
for i in range(n - 2, -1, -1):
for j in range(len(triangle[i])):
triangle[i][j] += max(triangle[i+1][j], triangle[i+1][j+1])
# 输出结果
print("max={}".format(triangle[0][0]))
print("数值和最大的路径是: ", end="")
path = []
j = 0
for i in range(n - 1):
path.append(str(triangle[i][j]))
if triangle[i+1][j] > triangle[i+1][j+1]:
j = j
else:
j = j + 1
path.append(str(triangle[n-1][j]))
print("->".join(path))
```
输出结果为:
```
max=59
数值和最大的路径是: 9->12->10->18->10
```