$\newcommand{\O}{\mathrm{O}}$ My Algorithm : kopricky アルゴリズムライブラリ

kopricky アルゴリズムライブラリ

Next Combination

コードについての説明

要素数 $n$ の数列から $r$ 個の要素の取り方 $n \mathrm{C} r$ 通りをなめたいときに使うテク.
STL にある next_permutation を用いて true/false の配列で mask する形で $r$ 個選んでくると良い

コード

vector<bool> v(n, false);
fill(v.end() - r, v.end(), true);
do {
    vector<int> res;
    for(int i = 0; i < n; i++){
        if(v[i]){
            res.push_back(i);
        }
    }
}while(next_permutation(v.begin(), v.end()));

verify 用の問題

省略