これは、辞書編集順列を注文するために私が見つけた段階的なプロセスです。
前に印刷された順列を取り、次の文字よりも小さい右端の文字を見つけます。この文字を「最初の文字」と呼びましょう。
「最初のキャラクター」の天井を見つけます。天井は、「最初の文字」よりも大きい「最初の文字」の右側にある最小の文字です。ceil 文字を「2 番目の文字」と呼びましょう。
上記の 2 つの手順で見つかった 2 つの文字を入れ替えます。
「最初の文字」の元のインデックスの後に部分文字列を (減少しない順序で) 並べ替えます。
ソース: http://www.geeksforgeeks.org/lexicographic-permutations-of-string/
私はすでに擬似コードを書いており、今からプログラミングを始めようとしています。アルゴリズムで何が起こっているかは理解していますが、なぜ機能するのかわかりません。ステップ 2 のように、天井の文字が「最初の文字よりも大きい、最初の文字の右側にある最小の文字」である必要があるのはなぜですか。このようにしないとうまくいかないことは理解していますが、そうするとうまくいく理由がわかりません。
アルゴリズムの各ステップが必要な理由を誰かが説明してくれれば、それは素晴らしいことであり、コードを開始するのがはるかに快適になります。
編集:最小の順列を見つけるために、部分文字列をacsending順序に再配置する理由を理解していることを言及する必要があります。私が理解していないのは、天井と最初の文字を交換する理由に関するステップ1と2です