【发布时间】:2021-04-18 00:21:20
【问题描述】:
假设我们有一个包含一些数字的数组,我们得到一个值 d(其中 d >= 1),它指示某个所需的索引。我们如何找到以 d 为界的值的最大总和。这是一个例子:
arr = [3000, 4000, 2000, 2500, 3500, 5000]
d = 3
将返回 4000 + 5000 = 9000(因为这两个数字之间的距离至少为 3)。但在这种情况下:
arr = [3000, 4000, 2000, 2500, 3500, 5000]
d = 2
将返回 4000 + 2500 + 5000 = 11500。
edit:更多解释 - 我们需要在数组中找到最大可能的总和。唯一的技巧是我们不能包含小于 d 索引的数字。在第二个示例中,我们可以轻松地将所有数字相加以获得最大值,但由于我们以 d = 2 为界,我们必须选择一个数字不小于距离 2 的组合。另一个示例可能包括 3000 + 2500 + 5000 = 10500。如果您查看我的第二个解决方案 11500 > 10500,因此这不是最佳答案
【问题讨论】:
-
你能解释一下第二种情况吗?
-
我认为语言需要加强。正如给定的那样,它可以用不同的方式来解释。例如,我不知道“以 d 为界”是什么意思。
-
我相信这个想法是找到一个最大和子序列
[A[i1], A[i2], ...],使得每个索引之间的差异至少是d。 -
您的问题需要进一步澄清
标签: python-3.x algorithm subsequence maximization