n 番目の順列を識別するための効率的なアルゴリズム
順列を表す要素の配列が与えられた場合、この質問は、次のようなアルゴリズムの可能性を探ります。先行するものをすべて計算せずに、n 番目の順列を効率的に計算します。
因数順列分解
このソリューションでは、因数分解の概念を利用します。階乗による連続的な除算を実行することにより、順列インデックスが一連の商に分解されます。このシーケンスは、目的の順列を表します。
商の調整
ただし、初期商は前の値の影響を無視します。したがって、調整ステップが必要です。各商について、それより小さいか等しい先行する商の数だけ値が増加します。
実装
アルゴリズムの C 実装が提供されています。以下:
例
たとえば、ithPermutation(10, 3628799) は 10 個の要素の最後の順列を返します:
以上がセットの n 番目の順列を効率的に見つけるにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。