728x90
300x250
https://www.acmicpc.net/problem/15649
순열의 기본적인 문제..
순서대로 나열..
import java.util.*;
public class Main {
public static int N,M;
public static int[] ans;
public static boolean[] visit;
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
N = sc.nextInt(); //전체 수 1~N
M = sc.nextInt(); //뽑을 갯수
for (int i = 1; i <= N; i++) {
ans = new int[M];
visit= new boolean[N+1];
int idx= 0;
ans[idx++]=i; //첫 시작점 넣어주기
visit[i]=true;
dfs(idx);
visit[i]=false;
}
}
public static void dfs( int idx) {
//종료조건
//갯수 다 뽑았는가?
if(idx==M) {
for (int i = 0; i < M; i++) {
System.out.print(ans[i]+" ");
}
System.out.println();
return;
}
for (int i = 1; i <= N; i++) {
//이미 뽑았던 숫자면 제외
if(visit[i])
continue;
ans[idx]=i;
visit[i]=true;
dfs(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 |
백준 15650번: N과 M (2) (0) | 2020.03.03 |