ホームページ  >  記事  >  バックエンド開発  >  C の `std::next_permutation` と `std::prev_permutation` を使用して順列を生成するにはどうすればよいですか?

C の `std::next_permutation` と `std::prev_permutation` を使用して順列を生成するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-27 03:11:10597ブラウズ

How Can C  's `std::next_permutation` and `std::prev_permutation` Be Used to Generate Permutations?

C の順列および組み合わせ関数

C には、順列および組み合わせの計算を容易にする既存のライブラリおよびメソッドがあります。質問で述べられている特定のニーズに対処するために、よく知られ広く使用されているライブラリ関数は、std::next_permutation および std::prev_permutation です。 header.

ライブラリ関数: 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 関数は、指定されたオブジェクトの前の順列を計算します。要素。これは同様の方法で動作し、指定された範囲内の要素を再配置して前の順列を見つけます。

考慮事項:

  • std::next_permutation と std ::prev_permutation 関数を正しく使用するには、入力シーケンスを昇順または降順でソートする必要があります。
  • これらの関数は、比較的小さなシーケンスの順列や組み合わせを見つける必要があるシナリオに適しています。大規模なデータセットの場合は、特殊なアルゴリズムまたは最適化されたライブラリの方が適切な場合があります。

以上がC の `std::next_permutation` と `std::prev_permutation` を使用して順列を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。