[๋ฐฑ์ค/1010/๋ค๋ฆฌ ๋๊ธฐ]
https://www.acmicpc.net/problem/1010
1010๋ฒ: ๋ค๋ฆฌ ๋๊ธฐ
์ ๋ ฅ์ ์ฒซ ์ค์๋ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ ๋ค์ ์ค๋ถํฐ ๊ฐ๊ฐ์ ํ ์คํธ์ผ์ด์ค์ ๋ํด ๊ฐ์ ์์ชฝ๊ณผ ๋์ชฝ์ ์๋ ์ฌ์ดํธ์ ๊ฐ์ ์ ์ N, M (0 < N ≤ M < 30)์ด ์ฃผ์ด์ง๋ค.
www.acmicpc.net
<<ํ์ด>>
์ด ๋ฌธ์ ๋ DFS๋ก ํ์๋ค. ์ฒ์์๋ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฌ๋๋ฐ ๋ฉ๋ชจ์ ์ด์ ์ ํ์ฉํ๋ค๋ฉด ์ด๋ฅผ ๊ทน๋ณตํ ์ ์๊ณ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ด๊ฐ ๋ค๋ฆฌ๊ฐ ๋์์ง ์ ์๋ ์ต๋ ๊ฐฏ์๋ฅผ ํ์ธ ์ ํ๊ณ ๋ฌด์์ ๋๊ฒ ์ก์์ ์๊ธด ๋ฌธ์ ์ด๋ค. ์ด๋ฐ ๋ถ๋ถ๋ง ์กฐ์ฌํ๋ฉด ๋ฐ๋ก ๊ตฌํ ์ ์๋ค!!
๋ฉ๋ชจ์ ์ด์ ์ ํ์ฉํ ๋ ์กฐํฉ์ณ๋ผ nCr ์ ํน์ n, r์ผ ๋์ ๊ฐ์ ์ ์ฅํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด์ค๋ฐฐ์ด์ ์ฌ์ฉํด์ ๋ฉ๋ชจ์ ์ด์ ์ ํ์ฉํ๋ค.
์ธ์๋ ์กฐํฉ์ ํ๊ธฐ ์ํ ์ ํ์ ์ธ ๋ฐฉ์์ด๋ค !!
nCr = n-1Cr + n-1Cr-1
์ด ๊ณต์์ ์ ๊ธฐ์ตํด๋์!
import java.util.Scanner;
class Data {
int a;
int b;
public Data(int a, int b) {
this.a = a;
this.b = b;
}
}
class Main {
public static int[][] ch = new int[50][50];
private int DFS(int b, int a, int n) {
if (ch[b][a] > 0) return ch[b][a];
for (int i = 0; i < n; i++) {
if (b == a || a == 0) return 1;
else return ch[b][a] = DFS(b - 1, a - 1, n) + DFS(b - 1, a, n);
}
return -1;
}
public static void main (String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
Data[] data = new Data[n];
for (int i = 0; i < n; i++) {
data[i] = new Data(in.nextInt(), in.nextInt());
}
for (int i = 0; i < n; i++) {
System.out.println(T.DFS(data[i].b, data[i].a, n));
}
}
}
'์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธํ๋ฐ/DP/2.๋๋ค๋ฆฌ ๊ฑด๋๊ธฐ] (5) | 2024.03.22 |
---|---|
[์ธํ๋ฐ/Greedy/1.์จ๋ฆ์ ์] (0) | 2024.03.20 |
[๋ฐฑ์ค/1009/๋ถ์ฐ์ฒ๋ฆฌ] (2) | 2024.03.19 |
[๋ฐฑ์ค/1032/๋ช ๋ น ํ๋กฌํํธ] (5) | 2024.03.18 |
[์ธํ๋ฐ/DFS/8. ์์ด ์ถ์ธกํ๊ธฐ] (4) | 2024.03.15 |
๋๊ธ