【问题标题】:How to return a s that has the maximum Sum value in the list如何返回列表中具有最大 Sum 值的 s
【发布时间】:2019-02-20 03:41:10
【问题描述】:

我需要创建一个 maxSequence() 函数,它有一个列表的用户输入,它将输入列表作为参数,它返回一个子列表,其值序列为我们提供列表中的最大总和。

所以如果我们调用 maxSequence([-2, 1, -3, 4, -1, 2, 1, -5, 4])。 它应该返回:6: [4, -1, 2, 1]

【问题讨论】:

标签: python


【解决方案1】:

你必须暴力破解它。 编辑:algorithms 比我的蛮力解决方案更快。 (感谢@user2357112 )

构造所有子列表并检查总和最大的。要构建从start=0 和end=start+1 开始的所有子列表,然后增加end 直到结果是整个列表,重复该步骤增加start 等:

a = [-2, 1, -3, 4, -1, 2, 1, -5, 4]

max = sum(a)
l = a[:]
for start in range(len(a)):
    for end in range(start, len(a)):
        s = sum(a[start:end+1])
        if s > max:
            max = s
            l = a[start:end+1]
print(max, l)

结果:

6 [4, -1, 2, 1]

您检查的列表是(按此顺序):

[-2]
[-2, 1]
[-2, 1, -3]
[-2, 1, -3, 4]
[-2, 1, -3, 4, -1]
[-2, 1, -3, 4, -1, 2]
[-2, 1, -3, 4, -1, 2, 1]
[-2, 1, -3, 4, -1, 2, 1, -5]
[-2, 1, -3, 4, -1, 2, 1, -5, 4]
[1]
[1, -3]
[1, -3, 4]
[1, -3, 4, -1]
[1, -3, 4, -1, 2]
[1, -3, 4, -1, 2, 1]
[1, -3, 4, -1, 2, 1, -5]
[1, -3, 4, -1, 2, 1, -5, 4]
[-3]
[-3, 4]
[-3, 4, -1]
[-3, 4, -1, 2]
[-3, 4, -1, 2, 1]
[-3, 4, -1, 2, 1, -5]
[-3, 4, -1, 2, 1, -5, 4]
[4]
[4, -1]
[4, -1, 2]
[4, -1, 2, 1]
[4, -1, 2, 1, -5]
[4, -1, 2, 1, -5, 4]
[-1]
[-1, 2]
[-1, 2, 1]
[-1, 2, 1, -5]
[-1, 2, 1, -5, 4]
[2]
[2, 1]
[2, 1, -5]
[2, 1, -5, 4]
[1]
[1, -5]
[1, -5, 4]
[-5]
[-5, 4]
[4]

【讨论】:

  • 非常感谢,它就像一个魅力。我现在只想问我们如何更改 A 的默认列表,我们将在每次迭代时提供给程序的列表。非常感谢!
  • 我还想将整个代码包含在一个 maxSequence() 函数下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多