본문 바로가기
알고리즘 이전/재귀, DFS, BFS, Tree, Graph

조합 구하기

by hoshi03 2023. 8. 25.

1부터 N까지 번호가 적힌 구슬이 있습니다. 이 중 M개를 뽑는 방법의 수를 출력하는 프로그
램을 작성하세요.출력순서는 사전순으로 오름차순으로 출력합니다.


입력
4 2
출력
1 2
1 3
1 4
2 3
2 4
3 4

 

조합 뽑는 방법은 외워두자 

DFS(L ,S) 형태일때 else문이 조금 독특하게 생겻다, DFS(0, 1) 부터 시작

 else {
            for (int i = S; i <= n; i++){
                comb[L] = i;
                DFS(L+1, i+1);
            }
        }

전체 코드

import java.util.*;
class Main{

    static int n,m;
    static int[] comb;
    public void DFS(int L, int S){
        if(L == m){
            for (int x : comb) System.out.print(x + " ");
            System.out.println();
        }

        else {
            for (int i = S; i <= n; i++){
                comb[L] = i;
                DFS(L+1, i+1);
            }
        }
    }

    public static void main(String[] args){
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        m = in.nextInt();
        //m개의 숫자를 뽑아서 저장
        comb =new int[m];

        T.DFS(0, 1);

    }
}

'알고리즘 이전 > 재귀, DFS, BFS, Tree, Graph' 카테고리의 다른 글

미로의 최단거리(BFS)  (0) 2023.08.31
DFS 미로찾기  (0) 2023.08.31
수열 추측하기  (0) 2023.08.25
순열 구하기  (0) 2023.08.24
조합 구하기(메모리제이션)  (0) 2023.08.24