N과 M (1)과 유사한 문제이다.
public class P15650 {
static int N, M;
static int arr[]; // 출력에 활용할 array
static boolean visited[]; // 방문 표시
public static void main(String[] args) throws IOException {
System.setIn(new FileInputStream("src/Algorithm/P15650/input.txt"));
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];
dfs(0, 0);
}
private static void dfs(int at, int depth) {
if (depth == M) {
for (int i = 0; i < M; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
return;
}
for (int i = at; i < N; i++) {
System.out.print(arr[i] + " ");
dfs(i + 1, depth + 1);
}
}
}