728x90
300x250
N과 M(2)는 조합이다.
조합은.. 순서가 없이 그냥 선택만 하는 경우
1.4와 4.1 을 같은 것으로 간주 1과 4를 선택했으니~
import java.util.Scanner;
public class Main {
public static int N , M;
public static boolean visit[];
public static int[] ans;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt(); //1~N까지의 숫자
M = sc.nextInt(); //뽑을 숫자 갯수
ans = new int[M];
visit = new boolean[N+1];
dfs(1,0); //숫자 1부터 N까지 돌것 , idx는 0
}
public static void dfs(int num , int idx) {
//종료조건
//M만큼 뽑았는가?
if(idx==M) {
for (int i = 0; i < ans.length; i++) {
System.out.print(ans[i]+" ");
}
System.out.println();
return;
}
for (int i = num; i <=N; i++) {
//이미 사용한 숫자인가?
if(visit[i])
continue;
visit[i]=true;
ans[idx]=i;
dfs(i,idx+1);
visit[i]=false;
}
}
}
728x90
'알고리즘 > 조합 & 순열' 카테고리의 다른 글
백준 15655번: N과 M (6) (0) | 2020.03.04 |
---|---|
백준 15654번: N과 M (5) (0) | 2020.03.04 |
백준 15652번: N과 M (4) (0) | 2020.03.04 |
백준 15651번: N과 M (3) (0) | 2020.03.03 |
백준 15649번: N과 M (1) (0) | 2020.03.03 |