ALGORITHM
[JAVA] 알고리즘 : DFS- 조합수(메모이제이션)
연듀
2022. 9. 23. 16:00

메모이제이션 사용하지 않는 방법
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
class Main{
public int DFS(int n, int r){
if(n==r || r==0) return 1;
else return DFS(n-1, r-1)+DFS(n-1, r);
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int r = kb.nextInt();
System.out.println(T.DFS(n,r));
}
}
메모이제이션 사용한 방법
import java.util.Scanner;
class Main{
int[][] dy = new int[35][35];
public int DFS(int n, int r){
if(dy[n][r] > 0) return dy[n][r]; // 이미 구한 값이라면 재귀 호출 하지 않기
if(n==r || r==0) return 1;
else return dy[n][r] = DFS(n-1, r-1)+DFS(n-1, r);
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int r = kb.nextInt();
System.out.println(T.DFS(n,r));
}
}
반응형