在 C 中產生組合
建立組合涉及從給定集合中選擇元素的子集,而不考慮選擇的順序。當面臨使用C 產生組合的任務時,重要的是要考慮以下幾點:
問題定義:
給定一個集合S = {1, 2 , 3 , ..., n} 和值r,其中r 是要從集合中選擇的元素數量,我們的目標是從給定的長度 r產生所有可能的組合set.
解決方案:
解決此問題的一種方法是使用 C 標準庫中的 std::next_permutation 函數。這個函數允許我們產生元素向量的所有排列。透過利用此函數,我們可以建立表示所選元素的布林值向量。
實作:
這是使用std::next_permutation 的範例實作:
在此實作中,我們建立一個長度為n 的向量,並以true 填滿最後r 個元素。然後使用 std::next_permutation 函數產生向量的所有可能的排列。對於每個排列,我們列印與向量中的真實值相對應的元素。
解釋:
這種方法透過建立一個「選擇陣列」來運作(v)我們放置 r 選擇器的地方。然後,我們產生這些選擇器的所有排列,並列印相應的集合成員(如果它們在 v 的當前排列中被選擇)。
透過利用 std::next_permutation 函數,我們可以有效地產生長度 r 的所有組合給定的集合。
以上是如何使用 C 的 `std::next_permutation` 來產生所有給定大小的組合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!