[DFS] 4. 중복순열(채점지원안됨) ★

레테·2022년 2월 15일
0

Q. (X)


1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 중복을 허락하여 M번을 뽑아 일렬로 나열
하는 방법을 모두 출력합니다.
▣ 입력설명
첫 번째 줄에 자연수 N(3<=N<=10)과 M(2<=M<=N) 이 주어집니다.
▣ 출력설명
첫 번째 줄에 결과를 출력합니다.
출력순서는 사전순으로 오름차순으로 출력합니다.
▣ 입력예제 1
3 2
▣ 출력예제 1
1 1
1 2
1 3
2 1
2 2
2 3
3 1
3 2
3 3

실패 요인

새 유형의 문제

전략

  • 부분집합 문제는 포함하는 경우, 포함하지 않는 경우 두 갈래로만 뻗었음
  • 해당 문제는 n갈래로 뻗는다.
  • 트리 & 스택 그려보기

정답

import java.util.Scanner;

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

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

0개의 댓글

관련 채용 정보