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 |