小编nas*_*mat的帖子

列表元素的最大总和,每个元素由(至少)k 个元素分隔

给定一个数字列表来找到时间复杂度为 o(n) 和空间复杂度为 o(1) 的非相邻元素的最大和,我可以使用这个:

sum1= 0
sum2= list[0]

for i in range(1, len(list)):
    num= sum1
    sum1= sum2+ list[i]
    sum2= max(num, sum2)

print(max(sum2, sum1))
Run Code Online (Sandbox Code Playgroud)

此代码仅在 k = 1 [求和数之间只有一个元素] 时才有效,如何通过使用动态编程更改 k 值来改进它。其中 k 是求和数之间的元素数。例如:

列表 = [5,6,4,1,2] k=1 答案 = 11 # 5+4+2

列表 = [5,6,4,1,2] k=2 答案 = 8 # 6+2

列表 = [5,3,4,10,2] k=1 答案 = 15 # 5+10

python algorithm dynamic-programming

3
推荐指数
1
解决办法
1496
查看次数

标签 统计

algorithm ×1

dynamic-programming ×1

python ×1