algorithm - 创建多个组合,总和为 100

标签 algorithm vba

我希望能够在给定定义数量的“桶”和定义的“差异因子”的情况下创建总和为 100% 的多个组合。在下面的示例中,为了简单起见,差异是 20 倍,但我可能会在最终解决方案中将其减少到 1。

例如,使用 3 个“桶”A、B、C,您可以拥有:

A     100     80      80      60      60  ...   0
B     0       20      0       20      40  ...   0
C     0       0       20      20      0   ...   100

每一列都是一个组合(总和为 100),我想存储它并对其进行进一步计算。

这是一个业务问题,而不是家庭作业。

请帮我想出一个解决方案。一种强力方法是为每种可能的组合创建一个多维数组,例如100x100x100,然后遍历每 100 万个组合,看看哪些组合的总和为 100。然而,这看起来效率太低了。

非常感谢。我希望我已经解释得足够清楚了。

最佳答案

此问题称为 partitions而不是组合,这是不同的。

首先:“差异因子”只是将问题从查找 100 的分区转变为(在您的示例中)查找 5 的分区(然后乘以 20)。

下一步:如果桶的数量是恒定的,你可以这样做(伪代码):

for i = 0 to n
  for j = 0 to n-i
    output (i, j, n-(i+j))

如果桶的数量是动态的,你就必须更聪明一点,但这种方法基本上是有效的。

关于algorithm - 创建多个组合,总和为 100,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5245412/

相关文章:

python - 在Python中高精度地找到由(x,y)数据给出的两条曲线的交点

algorithm - 找到矩形平铺螺旋的第 n 个元素的位置?

vba - 使用VBA调用手机

excel - 如何在将数据从 Excel 导入 Outlook 时设置固定列宽?

algorithm - 实现随机删除和插入的数据结构,其中元素在 [a,b] 中加权

algorithm - 在哪里可以找到有关 D* 或 D* Lite 寻路算法的信息?

excel - 如何加载每个用户窗体而不必单独调用 .Show?

vba - Excel 2013 VBA : Setting activeworkbook when clicking between workbooks

string - z算法的实现

vba - 处理 Excel VBA 宏中的 REST API 处理