Algorithm/백준
[백준] 15651번 N과 M (3)
sirius
2021. 3. 2. 11:22
https://www.acmicpc.net/problem/15651
15651번: N과 M (3)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
시간초과에 유의
import java.util.*;
import java.io.*;
public class Main {
public static int N, M;
public static int[] arr;
public static boolean[] visit;
public static StringBuffer sb = new StringBuffer();
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()); // 길이
arr = new int[M];
visit = new boolean[N];
dfs(0);
System.out.println(sb);
}
private static void dfs(int depth) {
if (M == depth) {
for (int num : arr) {
sb.append(num).append(" ");
}
sb.append("\n");
return;
}
for (int i = 0; i < N; i++) {
visit[i] = true;
arr[depth] = i + 1;
dfs(depth + 1);
visit[i] = false;
}
}
}