1654: D:数塔塔塔塔塔塔:
输入 :
输出 :
python代码:
# 多测试实例
n = int(input())
lis2 = []
for i in range(n):
l = int(input())
lis1 = []
for j in range(l):
lis1.append(list(map(int, input().split())))
lis2.append(lis1)
# print(lis2)
# 遍历求解
for i in range(n):
lis3 = lis2[i]
# print(lis3)
# 利用动态规划算出每个位置的最大值情况
for j in range(0, len(lis3)):
if j > 0:
m = -(j + 1)
lis4 = lis3[m] # 首先获取最后一个列表,实现动态规划算法
for z in range(len(lis4)):
lis3[m][z] = lis3[m][z] + max([lis3[-j][z], lis3[-j][z + 1]])
print(lis3[0][0]) # 输出最大的路径和
# 根据路径和找出最优路径 利用贪心算法即可
lis5 = [[i, 0] for i in range(len(lis3))] # 存储路径
for j in range(len(lis3)):
if j == 0:
print('(0,0)', end='')
if 0 < j:
a = lis5[j - 1][1]
if lis3[j][a] >= lis3[j][a + 1]:
lis5[j][1] = a
else:
lis5[j][1] = a + 1
# 按要求输出格式
if j == len(lis3) - 1:
print('-->(%d,%d)' % (lis5[j][0], lis5[j][1]))
else:
print('-->(%d,%d)' % (lis5[j][0], lis5[j][1]), end='')
人生苦短,我用python。