C には、順列および組み合わせの計算を容易にする既存のライブラリおよびメソッドがあります。質問で述べられている特定のニーズに対処するために、よく知られ広く使用されているライブラリ関数は、
ライブラリ関数: std::next_permutation
std::next_permutation 関数は、特定の範囲内の指定された要素の次の順列を計算します。新しい順列が見つかったかどうかを指定するブール値を返します。新しい順列が存在する場合、指定された範囲内の要素がそれに応じて再配置されます。
使用例:
#include <algorithm> #include <vector> int main() { std::vector<int> elements = {1, 2, 3, 4, 5}; std::sort(elements.begin(), elements.end()); // Find and print all permutations of the sorted elements do { for (int e : elements) { std::cout << e; } std::cout << '\n'; } while (std::next_permutation(elements.begin(), elements.end())); return 0; }
この例では、 std::next_permutation 関数は、ベクトル内の並べ替えられた要素のすべての順列を検索するために使用されます。順列を計算する前に、要素が昇順であることを確認するために std::sort 関数が最初に適用されます。
ライブラリ関数: std::prev_permutation
std と同様: :next_permutation、std::prev_permutation 関数は、指定されたオブジェクトの前の順列を計算します。要素。これは同様の方法で動作し、指定された範囲内の要素を再配置して前の順列を見つけます。
考慮事項:
以上がC の `std::next_permutation` と `std::prev_permutation` を使用して順列を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。