伪代码或C#算法,返回许多变量的所有可能组合集

我有3个变量,带有一些可能的值.

例如:

Var1 - possible values: 1,2,3
Var2 - possible values: a, b, c 
var3 - possible values: false, true

你能帮助我找到一种可以返回所有可能组合的方法吗?

结果如下:

   1,a,false
   1,a,true,
   1,b,false
   1,b,true,
   1,c,false
   1,c,true
   2,a,false
   2,a,true
   2,b,false
   Etc..

我希望该算法可以应用于任何级别的组合,例如,算法可以处理4或5个具有其他可能值的变量.

最佳答案 看起来你正在尝试枚举
Cartesian products.假设你的项目在list_of_lists中,伪代码中的这个递归函数将执行:

enumerate_cartesian_prducts(list_of_lists):

    if list_of_lists is empty:
        return [[]]

    this_list = list_of_lists[0]
    other_lists = list_of_lists[1: ]
    other_cartesian_products = []
    return [(e + other_cartesian_product) \
        for e in this_list and other_cartesian_product in other_cartesian_products]

注意在大多数语言中最后一行可能是一个双循环:它迭代第一个列表中的所有元素,其余部分的笛卡尔积中的所有列表,并创建所有附加结果的列表.

点赞