package com.hanzheng.algorithm.backtrace;
import java.util.LinkedList;
import java.util.List;
/**
* N 个元素的全排列(元素无重复)
*/
public class FullPermutation {
static List<List<String>> res = new LinkedList<>();
static LinkedList<String> track = new LinkedList<>();
private static boolean[] used;
public static void main(String[] args) {
String[] nums = new String[]{"1", "2", "3"};
res = permutation(nums);
for (List<String> e : res) {
System.out.println(e);
}
}
private static List<List<String>> permutation(String[] nums) {
used = new boolean[nums.length];
backtrack(nums);
return res;
}
private static void backtrack(String[] nums) {
if (nums.length == track.size()) {
res.add(new LinkedList<>(track));
}
for (int i = 0; i < nums.length; i++) {
if (used[i]) {
continue;
}
track.add(nums[i]);
used[i] = true;
backtrack(nums);
track.removeLast();
used[i] = false;
}
}
}