首頁 >後端開發 >C++ >如何在 C 中使用排列生成組合?

如何在 C 中使用排列生成組合?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-30 19:04:13486瀏覽

How Can I Generate Combinations in C   Using Permutations?

使用簡單排列在 C 中產生組合

在 C 中,您可以使用涉及排列的簡單方法來產生組合。此方法需要了解排列生成的概念,其中元素的順序很重要。

演算法摘要:

  1. 建立一個大小為 v 的布林向量 v n,其中 n 是集合中元素的總數。
  2. 對於 v 的前 r 個元素,將它們設為 真的。此步驟從集合中選擇前 r 個元素。
  3. 使用 next_permutation 或 prev_permutation 函數產生布林向量的所有排列。
  4. 對於每個排列,列印對應於的元素的索引中的真實值v.

實現:

這裡是使用next_permutation 的該演算法的實現:

#include <iostream>
#include <algorithm>
#include <vector>

int main() {
    int n, r;
    std::cin >> n;
    std::cin >> r;

    std::vector<bool> v(n);
    std::fill(v.end() - r, v.end(), true);

    do {
        for (int i = 0; i < n; ++i) {
            if (v[i]) {
                std::cout << (i + 1) << " ";
            }
        }
        std::cout << "\n";
    } while (std::next_permutation(v.begin(), v.end()));
    return 0;
}

解釋:

next_permutation 函數產生布林向量的下一個字典排列。透過迭代向量並列印真實值的索引,我們獲得了集合中前 r 個元素的組合。

以上是如何在 C 中使用排列生成組合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn