本機能は AtCoderLibrary ではなく C++標準ライブラリ std::next_permutation の移植です.
また,拡張 for 文によるイテレーションをサポートしています.
以下のイテレーションは,時間計算量
Permutation perm = new Permutation(n);
for (int[] p : perm) {
// code here
}
public Permutation(int n)長さ$N$の順列を列挙するイテレータを作ります. 計算量
public boolean hasNext()イテレータが後続の要素を保持する場合に真を返します.計算量
public int[] next()イテレータの後続の要素を取得します.計算量
public Iterator<int[]> iterator()順列を列挙するイテレータを取得します.
public static int[] nextPermutation(int[] a)与えられた順列に対して,辞書順でその直後となるような順列を返却します.
但し,入力の配列が辞書順最大の場合はnullを返却します.
入力配列中の任意の 2 要素が相異なることを仮定しています.
また,入力で与えられた順列を破壊的に変更することに注意してください.
計算量