0

我正在尝试根据在任意数量的部分中进行的选择来制定生成有效案例列表的最佳方法。也许它不是真正的算法,而只是关于如何有效迭代的建议,但对我来说这似乎是一个算法问题。如果我错了,请纠正我。该实现实际上是在 Javascript 中,但它同样适用于任何语言,因此是非语言特定的问题。

所以有许多部分,每个部分都有不同的选择,并且每个部分的数据可以有任意数量的选择。

如果在某个部分中未做出任何选择,则允许该部分的所有数据通过。如果做出选择,则数据必须具有这些选择中的一个或多个。

例如,使用:

Section: vacancy types
Choices: 1, 3

Section: exhibitor categories
Choices: 1, 5, 9

我想提出以下有效案例:

1,1
1,5
1,9
3,1
3,5
3,9

正如我所说,如果没有做出任何选择,所有数据都应该被允许通过,这是我最努力进行迭代的地方。但我也想要一个通用迭代,它可以用于任意数量的部分,而不仅仅是两个。

我确信这很简单,毫无疑问我在这里的语言并不理想(应该在计算机科学课程中更仔细地听)但是我如何设置我的迭代来给我上面的内容?

我不知道如何找到合适的资源来阅读此内容,因此只有一两个相关链接是可以接受的答案,尽管我当然也对具体答案感兴趣。

谢谢。

4

1 回答 1

1

您的有效案例是两个部分中选择的笛卡尔积。您可以计算一个更高阶的产品,它将产生一系列具有 N 个元素的选择组合,其中 N 是产品的阶数(部分的数量)。

最自然的算法是使用递归,但迭代算法也是可能的,正如您自己发现的那样。正如Eric Lippert所解释的那样,我使用LINQ获得了一些乐趣。

于 2013-09-21T12:11:52.697 回答