import java.util.ArrayList;
import java.util.List;
public class Main {
public static int counter = 0;
public static List<int[]> shortestPaths = new ArrayList<int[]>();
public static void permute(int[] arr, int startIndex) {
int size = arr.length;
if (arr.length == (startIndex + 1)) {
/*System.out.print("Permutation " + counter + " is: ");
for (int i = 0; i < size; i++) {
if (i == (size - 1))
System.out.print(arr[i] + "\n\n");
else
System.out.print(arr[i] + ", ");
}*/
shortestPaths.add(arr);
counter++;
} else {
for (int i = startIndex; i < size; i++) {
int[] tempArr = new int[arr.length];
System.
arraycopy(arr,
0, tempArr,
0, arr.
length); int tmp = tempArr[i];
tempArr[i] = tempArr[startIndex];
tempArr[startIndex] = tmp;
permute(tempArr, startIndex + 1);
tempArr = null;
}
}
}
public static void main
(String[] args
) { int[] arr = { 1, 2, 3 };
permute(arr, 0);
for (int[] a : shortestPaths) {
System.
out.
println(a
[0] + ", " + a
[1] + ", " + a
[2] + "\n"); }
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CmltcG9ydCBqYXZhLnV0aWwuTGlzdDsKCnB1YmxpYyBjbGFzcyBNYWluIHsKICAgIHB1YmxpYyBzdGF0aWMgaW50IGNvdW50ZXIgPSAwOwogICAgcHVibGljIHN0YXRpYyBMaXN0PGludFtdPiBzaG9ydGVzdFBhdGhzID0gbmV3IEFycmF5TGlzdDxpbnRbXT4oKTsKCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgcGVybXV0ZShpbnRbXSBhcnIsIGludCBzdGFydEluZGV4KSB7CiAgICAgICAgaW50IHNpemUgPSBhcnIubGVuZ3RoOwogICAgICAgIGlmIChhcnIubGVuZ3RoID09IChzdGFydEluZGV4ICsgMSkpIHsKICAgICAgICAgICAgLypTeXN0ZW0ub3V0LnByaW50KCJQZXJtdXRhdGlvbiAiICsgY291bnRlciArICIgaXM6ICIpOwogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKGkgPT0gKHNpemUgLSAxKSkKICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KGFycltpXSArICJcblxuIik7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChhcnJbaV0gKyAiLCAiKTsKICAgICAgICAgICAgfSovCiAgICAgICAgICAgIHNob3J0ZXN0UGF0aHMuYWRkKGFycik7CiAgICAgICAgICAgIGNvdW50ZXIrKzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBmb3IgKGludCBpID0gc3RhcnRJbmRleDsgaSA8IHNpemU7IGkrKykgewogICAgICAgICAgICAgICAgaW50W10gdGVtcEFyciA9IG5ldyBpbnRbYXJyLmxlbmd0aF07CiAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGFyciwgMCwgdGVtcEFyciwgMCwgYXJyLmxlbmd0aCk7CiAgICAgICAgICAgICAgICBpbnQgdG1wID0gdGVtcEFycltpXTsKICAgICAgICAgICAgICAgIHRlbXBBcnJbaV0gPSB0ZW1wQXJyW3N0YXJ0SW5kZXhdOwogICAgICAgICAgICAgICAgdGVtcEFycltzdGFydEluZGV4XSA9IHRtcDsKICAgICAgICAgICAgICAgIHBlcm11dGUodGVtcEFyciwgc3RhcnRJbmRleCArIDEpOwogICAgICAgICAgICAgICAgdGVtcEFyciA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIGludFtdIGFyciA9IHsgMSwgMiwgMyB9OwogICAgICAgIHBlcm11dGUoYXJyLCAwKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJcblxuXG5cbiIpOwogICAgICAgIGZvciAoaW50W10gYSA6IHNob3J0ZXN0UGF0aHMpIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGFbMF0gKyAiLCAiICsgYVsxXSArICIsICIgKyBhWzJdICsgIlxuIik7CiAgICAgICAgfQogICAgfQp9Cg==
1, 2, 3
1, 3, 2
2, 1, 3
2, 3, 1
3, 2, 1
3, 1, 2