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