[DFS] 6. ์์ด ๊ตฌํ๊ธฐ
<<ํ์ด>>
์์ด : ์๋ก ๋ค๋ฅธ n ๊ฐ ์ค r๊ฐ๋ฅผ ๊ณจ๋ผ ์์๋ฅผ ์ ํด ๋์ดํ๋ ๊ฐ์ง์
ํํ ์ฐ๋ฆฌ๋ ์ด๋ฅผ nPr ์ด๋ ๊ฒ ํด์ ํ์ด ์์๋ค. ์ด๋ฅผ ์ฝ๋๋ก ํ๋ฉด ์๋์ ๊ฐ์ ์ฝ๋๋ก ๋๋๋ฐ
์ด๋ DFS๋ฅผ ์ด์ฉํด์ ๊ตฌํ๋ฉด ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.
์ด์ ๋ถํฐ ํด์ค๋ ch๋ฅผ ํตํด ์ค๋ณต๋๋ ๊ฒฝ์ฐ๋ ์ ์ธ์์ผ์ค๋ค.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
class Main {
static int n, m;
static int[] brr, answer, ch;
private void DFS(int L) {
if (L == m) {
for(int x : answer) {
System.out.print(x + " ");
}
System.out.println();
} else {
for(int a : brr) {
if (ch[a] == 0) {
ch[a] = 1;
answer[L] = a;
DFS(L + 1);
ch[a] = 0;
}
}
}
}
public static void main(String[] args) throws Exception{
Main T = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] arr = br.readLine().split(" ");
n = Integer.parseInt(arr[0]);
m = Integer.parseInt(arr[1]);
brr = Arrays.asList(br.readLine().split(" "))
.stream()
.mapToInt(Integer::parseInt)
.toArray();
answer = new int[m];
ch = new int[100];
T.DFS(0);
}
}
'์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DFS] 7. ์กฐํฉ์ ๊ฒฝ์ฐ์(๋ฉ๋ชจ์ด์ ์ด์ ) (6) | 2024.02.26 |
---|---|
[๋ฐฑ์ค/1002/์ค๋ฒ3] ํฐ๋ (3) | 2024.02.25 |
[DFS] 5. ๋์ ๊ตํ (6) | 2024.02.24 |
[๋ฐฑ์ค/1051/์ค๋ฒ3] ์ซ์ ์ ์ฌ๊ฐํ (1) | 2024.02.22 |
[DFS] 3. ์ต๋์ ์ ๊ตฌํ๊ธฐ (1) | 2024.02.22 |
๋๊ธ