Algorithm/inflearn

중복순열 구하기(DFS)

마닐라 2021. 10. 3. 23:03

 

이전 문제랑은 다르게 이 문제부터는 가지가 2 가닥이 아닌 여러 가닥으로(N번) 뻗는다.

출력할 숫자를 넣어놓을 배열이 필요하다.

L은 숫자를 뽑는 갯수로 설정한다.

 

import java.util.*;

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 {
            //2가닥이 아닌 N가닥씩 뻗어나가야함.
            for(int i = 1; i <= n; i++) {
                pm[L] = i;
                //1~n까지 원소로 사용한다.
                DFS(L+1);
            }
        }
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        n = kb.nextInt();
        m = kb.nextInt();

        pm = new int[m];
        T.DFS(0);
    }

}

'Algorithm > inflearn' 카테고리의 다른 글

순열 구하기(DFS)  (0) 2021.10.04
동전교환(DFS, BFS)  (0) 2021.10.03
최대점수 구하기(DFS)  (0) 2021.10.03
바둑이 승차(DFS)  (0) 2021.10.03
#합이 같은 부분집합(DFS)  (0) 2021.10.03