【发布时间】:2017-01-11 16:15:33
【问题描述】:
我有一个 n 个数组,它们的大小都可能不同。我需要通过使用每个数组中的不超过一个值来计算 2 的可能组合并打印总数。例如:
我有:
n = 3, in arr[n]
arr = [[0, 1], [2, 3, 4], [5, 6, 7, 8]]
我想得到:
[0, 2], [0, 3], [0, 4], [0, 5], [0, 6], [0, 7], [0, 8],
[1, 8], [1, 3], [1, 4], [1, 5], [1, 6], [1, 7], [1, 8],
[3, 5], [3, 6], [3, 7], [3, 8],
[4, 5], [4, 6], [4, 7], [4, 8], etc.
return number of arrays
在数学上,我相信这是 xy + xz + y*z 或:
arr[0].size * arr[1].size + arr[0].size * arr[2].size + arr[1].size * arr[2].size
如果我的公式有误,请随时纠正我。
无论如何,对于未知的 n 数组,我该如何实现呢?
【问题讨论】:
-
我没有遵循你的公式,你是如何推导出
[0,2],[0.3]等的 -
0 是 arr[0] 的值,2 是 arr[1] 的值,3 是 arr[1] 的值。所以我需要从 arr[0] 中提取不超过一个值,从 arr[1] 中提取不超过一个值,并且从 arr[2] 中提取不超过一个值来创建两个值的组合。所以没有 arr[0] 和 arr[0] 的组合,也没有 arr[1] 和 arr[1] 等的组合。我需要对 arr[n] 中的变量 n 执行此操作。
标签: arrays ruby combinations arrayofarrays