質問:
std の機能、変数の役割、正確性について説明していただけますか: :next_permutationアルゴリズム?
答え:
仕組み:
std::next_permutation は、指定された要素のシーケンスを再配置します。次に辞書順に大きい順列。これは、i i i の最初の要素 i を見つけることによって行われます。 j の後のいくつかの j に対して、
ij となるような次に大きい要素 k を見つけます。 シーケンスの最後から k を開始します。
i i が見つかるまで右から左にシーケンスします。次の要素 j の j。
反復シーケンスの右端から要素 k が見つかるまで、i i k.
導入する要素 i と k の位置を交換します。減少するほど高い値point.
i と k を入れ替えると、次の降順が崩れる可能性があるため、 i 以降の残りの要素は、それを逆にして昇順でソートされます。 subsequence.
j: i の次の要素へのポインタ。
k
: 末尾から次に大きい要素へのポインタ。正しさスケッチ:
i からの最初の降順j 以降の要素はスワップで変更されないため、最後まで維持されます。
スワップi と k は、k が次の順列であるため、結果の順列が前の順列よりも辞書編集的に大きくなるようにします。より大きな要素が見つかりました。
以上がstd::next_permutation アルゴリズムはどのように機能し、その主要なコンポーネントは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。