๐ท๐ผ๋ชจ์ฌ๋ด์ ๊ฐ๋ฐ์์ฒ๐ท๐ผ
[JAVA/์ฝ๋ฉํ ์คํธ] ์กฐํฉ์ ๊ฒฝ์ฐ์(๋ฉ๋ชจ์ด์ ์ด์ ) ๋ณธ๋ฌธ
๊ฐ๋ฐ/์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด JAVA
[JAVA/์ฝ๋ฉํ ์คํธ] ์กฐํฉ์ ๊ฒฝ์ฐ์(๋ฉ๋ชจ์ด์ ์ด์ )
์์ผ์ด 2022. 2. 10. 01:11๋ฐ์ํ
์ค๋ช
๋ก ๊ณ์ฐํฉ๋๋ค.
ํ์ง๋ง ์ฌ๋ฌ๋ถ์ ์ด ๊ณต์์ ์ฐ์ง์๊ณ ๋ค์ ๊ณต์์ ์ฌ์ฉํ์ฌ ์ฌ๊ท๋ฅผ ์ด์ฉํด ์กฐํฉ์๋ฅผ ๊ตฌํด์ฃผ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ฐ์ n(3<=n<=33)๊ณผ r(0<=r<=n)์ด ์ ๋ ฅ๋ฉ๋๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์กฐํฉ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์์ ์ ๋ ฅ1
5 3
์์ ์ถ๋ ฅ1
10
์์ ์ ๋ ฅ2
33 19
์์ ์ถ๋ ฅ2
818809200
- ๋ด๊ฐ ํผ ํ์ด
import java.util.*;
public class Main {
static int[][] array;
public static int fact(int n) {
if (n <= 1)
return 1;
else
return fact(n-1) * n;
}
public int DFS(int n, int r){
if(n==r){
return 1;
}
if(r <= 1 || n <= 1){
int top = fact(n);
int bottom = fact(n-r) * fact(r);
array[n][r] = top / bottom;
}
if(array[n][r] == 0){
array[n][r] = DFS(n-1, r-1) + DFS(n-1, r);
}
return array[n][r];
}
public static void main(String[] args) {
Main main = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int r = kb.nextInt();
array = new int[n+1][r+1];
System.out.println(main.DFS(n, r));
}
}
'๊ฐ๋ฐ > ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA/์ฝ๋ฉํ ์คํธ] ๊ฒฐํผ์ (0) | 2022.02.14 |
---|---|
[JAVA/์ฝ๋ฉํ ์คํธ] ์จ๋ฆ ์ ์(Greedy Algorithm) (0) | 2022.02.12 |
[JAVA/์ฝ๋ฉํ ์คํธ] ์์ด๊ตฌํ๊ธฐ (0) | 2022.02.08 |
[JAVA/์ฝ๋ฉํ ์คํธ] ๋์ ๊ตํ (0) | 2022.01.30 |
[JAVA/์ฝ๋ฉํ ์คํธ] Least Recently Used (0) | 2022.01.18 |
Comments