본문 바로가기
Algorithm/문제 풀이

중복 순열 구하기(DFS)

by ilyadelavie 2022. 6. 18.

문제


1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 중복을 허락하여 M번을 뽑아 일렬로 나열 하는 방법을 모두 출력합니다.

 

입력

첫 번째 줄에 자연수 N(3<=N<=10)과 M(2<=M<=N) 이 주어집니다.

출력 

첫 번째 줄에 결과를 출력합니다.
출력순서는 사전순으로 오름차순으로 출력합니다.

 

Key Point


  • 1~자연수 N까지 모두 돌 동안 m크기의 배열 하나에 해당 자연수를 저장, 함께 뽑을 수 있는 1~N을 n번 더 돌린다.

 

풀이


내 풀이

public class Main {
    static int n,m;
    static int []pm;
    public void DFS(int level) {
        if(level==m){
            for(int x : pm) System.out.print(x+" ");
            System.out.println();
        }
        else {
            for(int i =1; i<=n; i++){
                pm[level] = i;
                DFS(level+1);
            }
        }
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        m = in.nextInt();
        pm = new int[m];
        T.DFS(0);
    }
}

 

 

 

 

 

 

'Algorithm > 문제 풀이' 카테고리의 다른 글

회의실 배정  (0) 2022.06.20
합이 같은 부분 집합(DFS)  (0) 2022.06.16
연속된 자연수의 합  (0) 2022.05.20