可能的组合和循环

时间:2012-04-24 19:23:07

标签: c++

我必须制作2d阵列的所有可能组合。例如如果我有一个4x3阵列...我使用4个循环,所有运行最多3 ..以获得所有组合......

for.e.g如果我有一个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 power n .... can任何一个帮助创建它....我想要帮助解决它在泛型.....我认为应该使用递归函数...因为我不知道循环的否...它将在运行时间...

1 个答案:

答案 0 :(得分:0)

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(); 
        }
    }
}