小球从上向下滚,每次只可以滚到左下,下,右下(滚到一个格子里面,把值做和)。计算小球滚到最下一层的最大值。如下:
动态规划代码如下:
def method(nums):
if nums==0:
return 0
game = []
for _ in range(nums):
game.append(list(map(int, input().strip().split())))
if nums == 1:
return game[0][0]
for i in range(3):
game[1][i] += game[0][0]
for i in range(2, nums):
for j in range(len(game[i])):
item_1 = game[i-1][j] if 0<=j<(2*i-1) else 0
item_2 = game[i-1][j-1] if 0<=(j-1)<(2*i-1) else 0
item_3 = game[i-1][j-2] if 0<=(j-2)<(2*i-1) else 0
game[i][j] += max((item_1,item_2,item_3))
return max(game[-1])
if __name__ == '__main__':
nums = int(input().strip())
res = method(nums)
print(res)
代码写的一般,求指教!