반응형
15654번: N과 M (5)
N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열
www.acmicpc.net
백트레킹 연습을 위한 N과 M 시리즈!
import java.util.*;
public class Main {
static int N, M;
static int[] num;
static int[] print;
static boolean[] visited;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
M = sc.nextInt();
num = new int[N];
visited = new boolean[N];
print = new int[M];
for (int i=0; i<N; i++) num[i] = sc.nextInt();
Arrays.sort(num);
bt(0, 0);
System.out.print(sb);
}
static void bt(int depth, int start){
if (depth == M){
for (int i : print)
sb.append(i+" ");
sb.append("\n");
return;
}
for (int i=0; i<N; i++){
if (!visited[i]) {
visited[i] = true;
print[depth] = num[i];
bt(depth + 1, i + 1);
visited[i] = false;
}
}
}
}
반응형
'Algorithm' 카테고리의 다른 글
백준 15656번 N과 M (7) [ Java ] (0) | 2020.12.23 |
---|---|
백준 15655번 N과 M (6) [ Java ] (0) | 2020.12.23 |
백준 1267번 핸드폰 요금 [ Java ] (0) | 2020.12.23 |
백준 10804번 카드 역배치 [ Java ] (0) | 2020.12.23 |
백준 2445번 별 찍기 - 8 [ Java ] (0) | 2020.12.22 |