如何实现代码以找出FORWARD DP样式中的最大总和子阵列?

时间:2016-08-01 17:29:04

标签: algorithm dynamic-programming

我尝试过这种递归关系:

`F(n) =  F(n+1)+ar[i] if it is +ve`
`     =  0 otherwise`

但是我得到了错误的答案,我理解为什么在调试后这给了我错误,但我找不到合适的解决方案。有人可以帮帮我吗?

问题陈述: 给定数组A,返回

max{sum(any subarray of A)}

现在,如果我遍历数组A,那么每个元素将成为已找到的解决方案的一部分,或者它将启动一个新的解决方案。 针对此的DP解决方案将是

def max_subarray(A):
   max_ending_here = max_so_far = 0
   for x in A:
      max_ending_here = max(0, max_ending_here + x)
      max_so_far = max(max_so_far, max_ending_here)
   return max_so_far

现在的问题是我无法建立相同的递归关系。

0 个答案:

没有答案