이전 N과 M 문제 시리즈를 풀었다면 간단하게 해결할 수 있는 문제이다.
비내림차순이라는 것은, 오름차순이면서 같은 숫자 사용을 허용한다는 뜻이다. 즉 중복허용이 된다는 것.
백트래킹 메서드(사실상 백트래킹은 아니고 완전탐색)에서 재귀 호출시 현재 사용할 수인 반복문의 i를 첫번째 인자로 넘겨주면 된다.
package BOJ;
import java.io.*;
import java.util.*;
public class sol15652 {
static int n, m;
static int[] arr;
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];
backTracking(1, 0);
}
static void backTracking(int start, int count) {
if (count == m) {
for (int i = 0; i < m; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
return;
}
for (int i = start; i <= n; i++) {
arr[count] = i;
backTracking(i, count + 1);
}
}
}
쌈뽕하네요