public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int total = Integer.parseInt(st.nextToken());
int selectCount = Integer.parseInt(st.nextToken());
int[] numbers = new int[total];
int[] selected = new int[selectCount];
boolean[] visited = new boolean[total];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < total; i++) {
numbers[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(numbers);
StringBuilder sb = new StringBuilder();
generatePermutations(numbers, visited, selected, 0, sb);
System.out.print(sb);
}
private static void generatePermutations(int[] numbers, boolean[] visited, int[] selected, int depth,
StringBuilder sb) {
if (depth == selected.length) {
for (int num : selected) {
sb.append(num).append(' ');
}
sb.append('\n');
return;
}
for (int i = 0; i < numbers.length; i++) {
if (visited[i])
continue;
visited[i] = true;
selected[depth] = numbers[i];
generatePermutations(numbers, visited, selected, depth + 1, sb);
visited[i] = false;
}
}
출처:https://www.acmicpc.net/problem/15654
