AcWing - 94 - 配置再帰列挙型(完全配列)

I OVOトピックのリンクは、ポイント
のテンプレートの完全な配列の前に....完全な配列を生きることを学ぶが、それは小さなから大出力に辞書式順序をしません

int a[] = {1, 2, 3, 4, 5};
void solve(int u) {
    if (u==n) {
        for (int i = 0; i<n; ++i)
            printf(i==n-1 ? "%d\n" : "%d ", a[i]);
        return;
    }
    for (int i = u; i<n; ++i) {
        swap(a[i], a[u]);
        solve(u+1);
        swap(a[i], a[u]);
    }
}
//调用solve(0);

そして、この方法は、選択された番号と為替の現在の数、および次のメソッドを交換していない前に、ビデオを見ると方法を学ぶためのXC首長今日は、選択するための時間がある
の配置位置を、次に列挙フロントこの場所内の未使用のぬいぐるみの数

int n; vector<int> path;
void solve(int u, int state) {
    if (u==n) {
        for (int i = 0; i<n; ++i)
            printf(i==n-1 ? "%d\n" : "%d ", path[i]);
        return;
    }
    for (int i = 0; i<n; ++i) {
        if (!(state >> i & 1)) {
            path.push_back(i+1);
            solve(u+1, state | (1<<i));
            path.pop_back();
        }
    }
}
//调用solve(0, 0);

おすすめ

転載: www.cnblogs.com/shuitiangong/p/12512245.html