import java.util.*;
public class Main
{
static int N, M;
static int[] arr;
static boolean[] visit;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
N = input.nextInt();
M = input.nextInt();
arr = new int[N];
visit = new boolean[N + 1];
recursion(0);
}
public static void recursion(int idx) {
if (idx == M){
for(int i = 0; i < M; i++){
System.out.print(arr[i] + " ");
}
System.out.println();
return;
}
for(int i = 1; i <= N; i++){
if(!visit[i]){
arr[idx] = i;
visit[i] = true;
recursion(idx + 1);
for(int j = i + 1; j <= N; j++){
visit[j] = false; // 2 -> 3 false 만듦, 1 -> 2,3 false 만듦
}
}
}
}
}
'알고리즘' 카테고리의 다른 글
<백준> 15652번 자바 알고리즘 (0) | 2021.12.31 |
---|---|
<백준> 15651번 자바 알고리즘 (0) | 2021.12.31 |
<리트코드> 622번 파이썬 알고리즘 [원형 큐] (0) | 2021.12.06 |
<리트코드> 739번 파이썬 알고리즘 [스택] (0) | 2021.12.05 |
<리트코드> 20번 파이썬 알고리즘 [스택] (0) | 2021.12.04 |