通过拾取元素在Array中的最大总和

时间:2017-11-12 14:29:07

标签: arrays dynamic-programming

给定三个数组a [],right []和left []。

我试图通过选择数组的元素来找到最大总和,这样如果选择了第i个元素,我就不能选择左边的[i]连续元素和i [i]连续的位于i右侧的元素。

a[] - indicates value of the array
right[] - right[i] means if element i is picked, we cannot pick right[i] elements that are in right side of i.
left[] - left[i] means if element i is picked, we cannot pick left[i] elements that are in left side of i.
  

示例 -
N = 5
a [] = [1 3 7 3 7]左[] = [0 0 2 2 2]
右[] = [3 0 1   0 0]

     

答案= 10(我们可以选择第二个和最后一个元素)

我在这里感觉动态编程。我已经解决了诸如最大总和之类的问题no two/three elements are adjacent. 我还尝试通过创建每个元素的开始和结束时间来解决这个问题,并使用weighted job scheduling algorithm

但我无法找出正确的解决方案

注意:1 <= N <= 300000

0 个答案:

没有答案