2012-04-24 22 views
-1

2次元配列のすべての可能な組み合わせを作成する必要があります。私は4つのループを使用して4x3の...イムの配列を持っている場合は、すべてが...すべての組み合わせを取得するために... 3まで走る可能な組み合わせとループ

for.eg下記の通り、私は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の配列を持っていれば、ma ximumの組み合わせは、mの電源nになります....それを作成するいずれかの助け....私はジェネリック.....それを解決するために役立つ必要がある私は再帰関数が使用されると思う...私は知らないループの回数は実行時にわかります...

+2

これは_permutations_として知られています。それはあなたに十分な情報を与えるはずですが、['std :: next_permutation'](http://en.cppreference.com/w/cpp/algorithm/next_permutation)とその要件を具体的に見てください。 – ildjarn

+1

この宿題はありますか? –

+0

私はur提供リンクを見ました...しかし、それは別のアプローチです.... – ssaaddii

答えて

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

私はこのコードで組み合わせ(配列)を印刷しますときplzは私に言います..私はどこですか? – ssaaddii

+0

4行目のコメントを置き換える必要があります。build.size()== arrays.size()は配列の各要素を取得したことを意味しますので、解決策があります – gabitzish

+0

ビルドは何ですか? – ssaaddii

関連する問題