NASU41 / AtCoderLibraryForJava

Creative Commons Zero v1.0 Universal
76 stars 21 forks source link

Add Permutation #44

Closed m1kit closed 3 years ago

uwi commented 3 years ago

Iterable<int[]>implementsしたほうが使いやすい気がします。 参考

m1kit commented 3 years ago

自分で実装していて気づいたんですが、拡張forだと最初もnext()が呼ばれるらしく、最初のpermutationが欠けてしまいますね。firstフラグを導入するか、nextの初期値を別な値にするかぐらいですかね・・

public class Main {
  public static void main(String...args) {
    Permutation perm = new Permutation(3);
    outer:
    for (int[] p : perm) {
      System.out.println(java.util.Arrays.toString(p));
    }
  }
}

これで

[0, 1, 2]
[0, 2, 1]
[1, 0, 2]
[1, 2, 0]
[2, 0, 1]
[2, 1, 0]

これが出てくるので,問題ないと思っているのですが,再現するコードを教えていただけますか?

uwi commented 3 years ago

あ、理解しました。nextPermutationで返すものは、呼ばれたときのnextで返すんではなく次に呼ばれたときに返すんですね