この問題は、0と1の順列を作成することに関するものです。コーディングソリューションとして最も簡単なのは、とを使用することnext_permutation
ですvector<bool>
。
辞書式順序で最も早い順列を持つベクトルを準備します(1つは後ろにあります)。next_permutation
が返されるまで実行しますfalse
。これは、3ビットが設定されたすべての8ビットシーケンスを生成するデモコードです。
vector<bool> data(8, false);
data[7] = data[6] = data[5] = true;
do {
for (int i = 0 ; i != data.size() ; i++) {
cout << (int)data[i];
}
cout << endl;
} while (next_permutation(data.begin(), data.end()));
デモを実行しているideoneへのリンクは次のとおりです。
プログラムには、最後の8つの要素がに設定された32ビットのベクトルが必要1
です。シーケンスの要素を出力する代わりに、それらを32ビットに変換しint
、出力コンテナーに格納する必要があります。