我正在尝试根据在任意数量的部分中进行的选择来制定生成有效案例列表的最佳方法。也许它不是一个真正的算法,而只是关于如何有效迭代的建议,但它似乎是一个算法问题给我。如果我错了,请纠正我。实现实际上是在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
正如我所说的,如果没有做出任何选择,那么所有数据都应该被允许通过,这是我在解决迭代问题时最努力的地方。但是我想要一个可以用于任意数量的部分的通用迭代,而不仅仅是两个部分。
我确信这很简单,毫无疑问我的语言不理想(应该在计算机科学课程中更仔细地听)但是我如何设置我的迭代来给我上述内容?
我不知道如何找到合适的资源来阅读,所以只需一两个相关链接就可以接受,但我当然也对具体答案感兴趣。
感谢。
答案 0 :(得分:1)
您的有效案例是这两个部分中的cartesian product选项。您可以计算一个更高阶的产品,它将产生一系列具有N个元素的选择组合,其中N是产品的顺序(部分的数量)。
最自然的算法是使用递归,但iterative algorithms也可能是您自己发现的。根据{{3}}的解释,我使用LINQ获得了一些乐趣。