-1

我有一个 8 个整数,4 个正数和 4 个负数的数组。

X [10,-2,30,-4,5,-20,8,-9]

现在,让

Evaluated = a-b+c-d+e-f+g-h

其中 a,b..h 是取自 X 的唯一值。我需要确保

案例 1. 评估 = 最接近于零。
案例 2. 通过求解 Evaluated 列出 5 个最大的可能性。我可以通过对数组进行排序并将最大值分配给 a、c、e 和 g 以及最小值 b、d、f 和 h 来找到最大值。但如何找到接下来的 4 个值?

有8个!解决这个方程的方法对吗?

确定此解决方案的最佳方法是什么?

4

3 回答 3

5

确保负值得到正号,正值得到负号。您将获得尽可能小的价值。你甚至不需要排序。

一种简单的方法是......

Loop Each Element of X

    if X[i] > 0 Then X[i] = -1 * X[i]

End Loop

Add all elements of X (yes just don't think about subtracting, just add)

结果总和是可能的最小值。

于 2013-04-30T14:09:58.173 回答
1

只需选择 a、c、e、g 作为四个最小值,其余作为最大值。

SmallExcel 中的函数可能会对您有所帮助。

于 2013-04-30T14:07:36.783 回答
1

如果我正确理解了这个问题,那么您有一个包含八个数字的数组。你想选择四个数字相加,四个相减,以获得尽可能小的结果。我将按如下方式进行:

  1. 将数组从小到大排序。本文介绍了两种方法来做到这一点。在您的示例中,排序后的数组将具有 [-20, -9, -4, -2, 5, 8, 10, 30]。
  2. 添加数组中的前四个值。
  3. 减去最后四个值。

通过添加四个值并减去八个数组中的剩余值,这将为您提供最小的结果。

于 2013-04-30T14:43:50.430 回答