-1

2D配列の可能なすべての組み合わせを作成する必要があります。たとえば、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 に答える