import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class boj15649 {
static int N, M;
static int[] foo;
static boolean[] visit;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
foo = new int[M];
visit = new boolean[N];
DFS(0);
}
public static void DFS(int depth){
if (depth == M){
// 탐색 종료 조건 : 길이가 M printArray(foo);
return;
}
// 재귀 호출을 통한 DFS 구현
for(int i = 0; i < N; i++){
if(!visit[i]){
visit[i] = true;
foo[depth] = i+1;
// 주의 : depth++ 사용하면 추가 연산 필요함.
// 되도록 재귀함수 쓸때는 그냥 +1 해주기
DFS(depth+1);
visit[i] = false;
}
}
}
public static void printArray(int[] array){
for(int i = 0; i < array.length ; i++){
System.out.print(array[i] + " ");
}
System.out.println();
}
}
Leave a comment