Closed m1kit closed 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]
これが出てくるので,問題ないと思っているのですが,再現するコードを教えていただけますか?
あ、理解しました。nextPermutation
で返すものは、呼ばれたときのnext
で返すんではなく次に呼ばれたときに返すんですね
Iterable<int[]>
もimplements
したほうが使いやすい気がします。 参考