Tag: 笛卡尔积

如何在飞行中做组合

我有一个非常奇怪的问题,有一些限制,使其难以解决。 我有一个列表列表,我想要对这些列表中的所有项目进行组合。 每个项目都有一个名称和一个值。 这是一个例子: 主要清单: 清单01: Item 01:name:name01,value:value01 项目02:名称:name02,值:value02 清单02: 项目01:名称:name03,值:value03 清单03: 项目01:名称:name04,值:value04 项目02:名称:name05,值:value05 最终结果应如下所示: 一些清单: 项目01:name01:value01,name03:value03,name04:value04 项目02:name02:value02,name03:value03,name04:value04 项03:name03:value03,name03:value03,name04:value04 项04:name01:value01,name03:value03,name04:value05 项目05:name02:value02,name03:value03,name04:value05 项目06:name03:value03,name03:value03,name04:value05 新列表几乎包含像哈希映射一样的项目。 约束如下: 我无法收集到新的列表并将它们混合起来,因为这些列表很快就会变得非常大。 我正在使用某种类似观察者的API,所以我需要尽快让观察者了解结果,这样我才不会使用太多内存。 换句话说,该组合生成器可以用X个列表来提供,每个列表可以包含N个项目,并且我必须生成它们的组合而不使用太多的存储器。 我不希望一次使用超过5个列表,但我想使算法尽可能适应代码更改。 我正在解决java中的问题,但算法也应该在其他语言中同样工作,因为它很可能被翻译。 你有什么想法,建议吗? 提前致谢。 PS我不认为递归会很好。 我正在研究使用while循环和一些嵌套循环的想法,但是很难想象它应该如何工作。