【发布时间】:2015-04-02 01:06:43
【问题描述】:
我有以下问题:我需要创建一个表,它是来自集合的值的组合。集合中元素的基数是未知的,并且可能因集合而异,值的域是未知的,并且也可能因集合而异。集合中的元素是非负的,至少有两个元素在一个集合中。 下面是一个例子:
- SET_A = { 0, 1, 2 }
- SET_B = { 0, 1 }
- SET_C = { 0, 1 }
结果应包含以下行(顺序不是约束):
表格:
- | 0 0 0 |
- | 0 0 1 |
- | 0 1 0 |
- | 0 1 1 |
- | 1 0 0 |
- | 1 0 1 |
- | 1 1 0 |
- | 1 1 1 |
- | 2 0 0 |
- | 2 0 1 |
- | 2 1 0 |
- | 2 1 1 |
有人知道这个问题背后的数学是什么吗?我试图查看多集问题、逻辑表、组合学。我发现的许多定义与我的问题有相似之处,但我无法在迄今为止访问的文献中隔离任何内容。一旦有了参考定义,我就可以考虑对其进行编码,但现在我迷失在递归函数和可怕的数组索引游戏中。谢谢。
编辑:已在以下位置提出问题: C# Permutation of an array of arraylists?
【问题讨论】:
-
我不确定您发布的套装与您的桌子有什么关系。你能解释一下这种关系吗?
-
@GeorgeMauer 表包含所有可能设置值的所有组合。
-
我不太了解 C#,但在 python 中,这是生成器/产量使用的完美示例。 yield 存在于 C# 中;可能有一种方法可以使用 yield 构造所需的表。 python中的示例:pastebin.com/zveXyd0S
-
@revani 哇,它在 python 中效果很好!
标签: c# logic combinatorics multiset