可能性の重複を要素のすべての組み合わせを生成します。
How can I create cartesian product of vector of vectors?は、2Dベクトルで
私は2Dベクトルの要素のすべての組み合わせを生成する方法を考え出すいくつかの論理的な問題を抱えています。ここでは、2Dベクトルを作成します。どちらの次元のサイズも想定できません。
#include <iostream>
#include <vector>
using namespace std;
int main() {
srand(time(NULL));
vector< vector<int> > array;
// This creates the following:
// array[0]: {0, 1, 2}
// array[1]: {3, 4, 5, 9}
// array[2]: {6, 7, 8}
for(int i=0; i<3; i++) {
vector<int> tmp;
tmp.push_back((i*3)+0); tmp.push_back((i*3)+1); tmp.push_back((i*3)+2);
if(i==1)
tmp.push_back((i*3)+6);
array.push_back(tmp);
}
}
次のようにベクトルを作成した後、私は出力にすべての可能な組み合わせを希望は:
comb[0] = {0, 3, 6}
comb[1] = {0, 3, 7}
comb[2] = {0, 3, 8}
comb[3] = {0, 4, 6}
comb[4] = {0, 4, 7}
comb[x] = {...}
は、しかし、私は、これを適切に行うためにループ構造を概念化する方法トラブルを抱えています各サブアレイの要素は未知/動的です。
EDIT 1:3つの配列があると想定できません。 array.size()があります;)
私はおそらくあなたを助けることができますが、実際には何を意味するのかを数学的に説明してください(http://www.mathsisfun.com/combinatorics/combinations-permutations.html)。 – Kos
それはおそらく板金製品ですか? 5つの配列ABCDEを入力として、aがAから、bがBなどから、すべての5タプル(abcde)を期待しますか? – Kos