[白俊15652]-NとM(4)


問題の説明
質問リンク

考えを整理する.
// 고른 수열의 개수(0)를 파라미터로 함수를 호출한다.

// 호출된 함수에서
// 고른 수열의 개수 == M이라면
	// 고른 수열을 출력한다.
    // 리턴한다.
// N번 반복하면서
	// 고른 수열 중, 마지막 숫자와 같거나 크면 
    	// 수열에 해당 숫자를 넣는다.
        // 고른 수열의 개수를 1 증가시켜서 다시 함수를 호출한다.
        
** 이 문제는 중복 허용이기 때문에 방문 확인은 하지 않았다.
完了
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BOJ15652 {
    static int N, M;
    static int[] arr;
    public static void main(String[] args) throws IOException{
        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+1];
        func(0);
    }
    
    static void func(int curr) {
        if(curr == M) {
            for(int i=0; i<M; i++){
                System.out.print((arr[i]+1) + " ");
            }
            System.out.println();
            return ;
        }

        for(int i=0; i<N; i++) {
            if( curr < 1 ||  arr[curr-1] <= i) {
                arr[curr] = i;
                func(curr+1);
            }
        }
    }
}