-1

我必须对二维数组进行所有可能的组合..例如,如果我有一个 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....任何人都可以帮忙创建它....我需要帮助以通用方式解决它...我认为应使用递归函数...因为我不知道循环的编号...它将在运行时知道。 ..

4

1 回答 1

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(); 
        }
    }
}
于 2012-04-24T19:32:32.137 回答