可能的组合和循环

possible combinations and loops

本文关键字:循环 组合      更新时间:2023-10-16

我必须使二维数组的所有可能组合。例如,如果我有一个 4x3 的数组......我使用 4 个循环,所有循环最多运行 3..获取所有组合...

例如,如果我有一个 4x3 数组,如下所示..

1 2 3
4 5 6
7 8 9 
10 11 12

我将不得不做出这样的组合

1,4,7,10 
1,4,7,11 
1,4,7,12 
1,4,8,10 
1,4,8,11 
1,4,8,12 
1,4,9,10 
1,4,9,11 
1,4,9,12 
1,5,8,10 
1,5,8,11 
1,5,8,12 
...........

等等....

简而言之,所有这些组合...在这种情况下,可能组合的最大数量将是 3 次方 4....如果我有一个 NXM 数组,那么最大组合将是 m 次方 n....任何人都可以帮助创建它....我需要帮助在通用中解决它.....我认为应该使用递归函数...因为我不知道循环的编号...它将在运行时知道...

void buildArray(vector <int> build, vector< vector <int> > &arrays)
{
    int position = build.size();
    if (position == arrays.size()) { /* current build is one of the solutions*/}
    else {        
        for (int i = 0; i < arrays[position].size(); i++) 
        {
            build.push_back(arrays[position][i]);
            buildArray(build, arrays);
            build.pop_back(); 
        }
    }
}