我需要找到分组到桶中的所有可能的非重叠项目组合。可能有任意数量的桶,每个桶可以包含任意数量的项目。有效的组合将包含每个存储桶中的 1 个项目。
bucket item start end
========================
|-- I1 1 5
B1----|-- I2 6 9
|-- I3 15 20
|-- I4 6 9
B2----|-- I5 10 14
|-- I6 14 25
|-- I7 1 14
B3----|-- I8 26 40
|-- I9 1 20
|-- In ...
Bn ...
例如,我们可以做第 1,4,8 项;1,5,8; 1,6,8; 2,5,8; 2,6,8; 3,4,8; 和 3,5,8。
我们可以观察到项目 9 没有出现在组合中,因为它与桶 1 中的所有项目重叠,没有留下任何选项。
我怎样才能最有效地解决这个问题?我正在浏览器 JavaScript 中实现这一点。