每日一题——数字三角形(P1216)(难度:普及−)

大一老牲,被蓝桥杯打废了~

记录一下吧,强制每天写一篇,总结也是督促^_^_

为了省事直接都写到代码里了

从屎山里爬出来!!!

希望大家都来,相互督促

11111111:请大佬帮忙改进,蟹蟹!

#首先还是读取
r = int(input())
pyramid = []
for i in range(r):
    row = list(map(int,input().split()))
    pyramid.append(row)

eg.

3
1
1 2
1 2 3
>>> pyramid
[[1], [1, 2], [1, 2, 3]]

#下一步就直接进行初始化数组

dp = [[0] * len(row) for row in pyramid]

#下一步怎么办呢 ———> 从下往上逐加,即整个数组每个点显示到该点的最大值
———> 这就需要先有最后一行

dp[-1] = pyramid[-1]   

#下面直接进行计算即可(从倒数第二行)

for i in range(r - 2, -1, -1):
    for j in range(len(pyramid[i])):
        dp[i][j] = pyramid[i][j] + max(dp[i + 1][j], dp[i + 1][j + 1])

print(dp[0][0])

本次用时:约1小时(第一次,不熟练)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值