https://j3sung.tistory.com/834
위의 문제와 비슷한 문제입니다. 다른 점은 조합이 수열이 중복되면 안된다는 점입니다.
ex) 1 2 3 4
4 3 2 1 (위의 경우와 중복)
DFS를 사용해 완전탐색을 진행하였으며
DFS내에서 반복문을 현재 다음위치부터로 진행해서 중복된 수열이 나오지 않게 했습니다.
import java.io.*;
import java.util.Scanner;
public class Main {
public static int[] arr;
public static boolean[] visit;
public static int n;
public static int m;
public static BufferedWriter bf;
public static void main(String argc[]) throws IOException{
bf = new BufferedWriter(new OutputStreamWriter(System.out));
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
arr = new int[m];
visit = new boolean[n];
for(int i=0; i<n; ++i){
DFS(i, 0);
}
bf.close();
}
public static void DFS(int num, int cnt) throws IOException{
visit[num] = true;
arr[cnt] = num + 1;
if(m == cnt+1){
for(int i=0; i<m; ++i) {
bf.write(arr[i] + " ");
}
bf.write("\n");
visit[num] = false;
return;
}
for(int i=num; i<n; ++i){
if(!visit[i]){
DFS(i, cnt+1);
}
}
visit[num] = false;
}
}
'알고리즘' 카테고리의 다른 글
[Java] 백준 13458번 시험 감독 (0) | 2023.01.24 |
---|---|
[Java] 백준 6603번 로또 (0) | 2023.01.24 |
[Java] 백준 15649번 N과 M (1) (0) | 2023.01.23 |
[Java] 백준 1260번 DFS와 BFS (0) | 2023.01.23 |
[Java] 백준 10845번 큐 (0) | 2023.01.23 |