N과 M(1) 문제에서 오름차순이라는 조건이 추가되었다.
N과 M(3)과 N과 M(4) 문제에서 활용했던 방식을 사용하여 이전에 ArrayList에 들어갔던 data를 Parameter로 다음 재귀 함수에 넣어주는 방식을 활용하였다.
import java.util.*;
public class Main {
static StringBuilder sb = new StringBuilder();
static int N;
static void rec_fun(int length, ArrayList<Integer> tmp, int before) {
// before : 이전 재귀함수에서 ArrayList에 넣었던 data 값
if(length==0) {
String answer = tmp.toString();
sb.append(answer.substring(1,answer.length()-1)
.replaceAll(",","")+"\n");
return;
}
for(int i = before;i<=N;i++) {
if(!tmp.contains(i)) {
tmp.add(i);
rec_fun(length-1, tmp, i);
tmp.remove(tmp.size()-1);
}
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
int M = sc.nextInt();
rec_fun(M, new ArrayList<Integer>(), 1);
System.out.println(sb.toString());
}
}