如何打印不相邻元素的数组的最大和子序列?

时间:2019-04-09 12:57:27

标签: python dynamic-programming array-algorithms

我有一段代码来查找可以与数组的非相邻元素形成的最大和。如何打印对总和有贡献的元素?

def find_max_sum(arr): 
  incl = 0
  excl = 0
  for i in range(len(arr)): 
    if excl>incl:
      new_excl = excl
    else:
      new_excl = incl
    incl = excl + arr[i]
    excl = new_excl
  return (excl if excl>incl else incl) 

1 个答案:

答案 0 :(得分:0)

我认为您正在尝试实现Kadane的算法,但状态不尽理想。 Kadane的算法应如下所示:

>>> ', '.join({'a':'x', 'b':'y'}.keys())
'a, b'

该算法将为您提供总和(对于def kadane(arr): maxseen = 0 window = 0 for i in range(len(arr)): window = max(arr[i], window+arr[i]) maxseen = max(window, maxseen) return maxseen 的空子数组,最小值为0),而不是子数组。因此,您只需要记住如何提出解决方案即可:

arr