Arrays 圆中的最大次连续和

Arrays 圆中的最大次连续和,arrays,algorithm,Arrays,Algorithm,问题是我有一个填充了n个数字的数组。我必须确定最大和,但是,如果位置I中的数字被加到和中,那么数字I-1和I+1就不能相加 n数被认为是一个圆 例如,如果一个数组具有下一个数组: {6,9,1,2,8,6,3,7,12,5,65,66,2} 最大金额为99: 9+8+3+12+65+2=99假设您知道包含数组的第一个元素。然后,您可以通过动态规划来解决这个问题:对于i=3到N-1,通过考虑是否包含元素i,并查看之前为第一个i-1或i-2元素的最佳解决方案计算的分数,为数组的前i个成员计算出最佳解

问题是我有一个填充了n个数字的数组。我必须确定最大和,但是,如果位置I中的数字被加到和中,那么数字I-1和I+1就不能相加

n数被认为是一个圆

例如,如果一个数组具有下一个数组:

{6,9,1,2,8,6,3,7,12,5,65,66,2} 最大金额为99:
9+8+3+12+65+2=99

假设您知道包含数组的第一个元素。然后,您可以通过动态规划来解决这个问题:对于i=3到N-1,通过考虑是否包含元素i,并查看之前为第一个i-1或i-2元素的最佳解决方案计算的分数,为数组的前i个成员计算出最佳解决方案,从而为i个元素计算出最佳解决方案。您不需要计算N个元素的最佳值,因为您不能包含最后一个元素,因为您包含了第一个元素,并且前两个元素的分数与第一个元素的分数相同,因为您包含了它

另一种可能性是不包括第一个元素。但是你可以用同样的方法计算出最好的分数,除了考虑i=2到N的可能性

现在您有了两种可能情况的答案-第一个元素包含或不包含-所以选择最好的


PS-如果这不是家庭作业,那么这是否真的有一个有用的应用呢?这是什么?

我认为你的问题很有趣,但不想回答,因为你自己没有表现出任何努力

不管怎样,既然麦克多拉已经回答了这个问题,我将试着详细阐述他的回答

让我们以输入数组为例:

a = [6, 9, 1, 2, 8, 6, 3, 7, 12, 5, 65, 66, 2]
其思想是逐步通过该数组计算两个最佳的解决方案。在步骤
i
,两种解决方案是包括
a[i]
的最佳解决方案和不包括
a[i]
的最佳解决方案。下面是使用上述数组作为输入运行此算法的示例:

// step = 1
solutions = [6], []
这一步(步骤-1)很明显,我们只有数组中的第一个元素。请注意,第一个解决方案组件(
[6]
)对应于包含
a[1]
的组件,第二个组件(
[]
)是不包含
a[1]
的组件

// step = 2
solutions = [9], [6]
在第二步中,我们将
a[2]=9
添加到先前的解决方案中,该解决方案不包括
a[1]
(即第二个组件-
[]
)。然后,我们选择前两个解决方案中最好的一个作为第二个组件。从这里开始,我们重复同样的过程:

// step = 3
solutions = [6, 1], [9]

// step = 4
solutions = [9, 2], [9]

// step = 5
solutions = [9, 8], [9, 2]

// step = 6
...

您还需要跟踪哪个解决方案(如果有)包含
a[1]
,因为在最后一步,我们不应该将
a[n]
添加到已经包含
a[1]
的解决方案中。此信息(可以是布尔标志)可以与两个解决方案组件中的每一个组件关联,并随着我们进行的每一步而更新。

在要求解决方案之前,请先展示一些解决家庭作业/面试问题的努力。这不是家庭作业。而且,实际上,我试图解决这个问题,但我做不到。我首先在一个圆中求出最大连续和。但是,我无法理解这一点。@RamonVargas:我想你需要说“这就是我尝试过的…,但它不起作用,因为诸如此类…”。你需要描述你尝试了什么,以及为什么没有成功。。。(你可以用这些细节更新帖子)在放射状停车场中,停放不同重要程度的车的最佳方式是哪种,这些车对于喷漆的停车线来说有点太宽了?是的,这有点牵强。。。