申し訳ありませんが重複していますが、鉱山と一致する回答が見つかりませんでした。どのように各要素がm個の異なる値のうちの1つを含むことができるサイズnのすべてのベクトルを生成するのですか?
私は3つの値を含むベクトルを持っているとします。私はこのベクトルから指定された長さの別のベクトルを構築したい。たとえば、長さがn=3
で、ベクトルに次の値が含まれているとします。0 1 2
0 0 0
0 0 1
0 0 2
0 1 0
0 1 1
0 1 2
0 2 0
0 2 1
0 2 2
1 0 0
1 0 1
1 0 2
1 1 0
1 1 1
1 1 2
1 2 0
1 2 1
1 2 2
2 0 0
2 0 1
2 0 2
2 1 0
2 1 1
2 1 2
2 2 0
2 2 1
2 2 2
私の現在の実装では、単にn
に基づいてループのために構築し、期待される出力を生成します。次のように私は期待して出力されます。私は、入力ベクトルに異なる長さと異なる値を持つ出力ベクトルを構築できるようにしたいと考えています。
next_permutation
を使用して実装を検討しましたが、残念ながら長さの値を渡しても機能しないようです。
このケースで使用できる時間と複雑さのアルゴリズムはありますか?繰り返しますが、これはn=17
まで、そしてサイズは6
のベクトルで計算しているかもしれません。
n=3
の実装は以下のとおりです。ここで、enc
は入力を含むベクトルです。
vector<vector<int> > combo_3(vector<double>enc,int bw){
vector<vector<int> > possibles;
for (unsigned int inner=0;inner<enc.size();inner++){
for (unsigned int inner1=0;inner1<enc.size();inner1++){
for (unsigned int inner2=0;inner2<enc.size();inner2++){
cout<<inner<<" "<<inner1<<" "<<inner2<<endl;
unsigned int arr[]={inner,inner1,inner2};
vector<int>current(arr,arr+sizeof(arr)/sizeof(arr[0]));
possibles.push_back(current);
current.clear();
}
}
}
return possibles;
}
「0 0 0」は「0 1 2」の順列ではありません。この事実に照らせば、あなたの質問はあまり意味がありません。 –
私はあなたが実際に置き換え可能なすべてのサンプリングを探していると思います。 – miradulo
'n = 17'までと' 6 'の周りのsizeofベクトルはどういう意味ですか?あなたのベクトルのサイズは 'n'ではありませんか? – Rafiwui