import java.util.Scanner;
class Main{
static int answer = Integer.MIN_VALUE, m, n;
public void DFS(int L, int sum, int time, int[] ps, int[] pt){
if(time > m) return; // 제한시간 초과하면 재귀 종료
if(L==n){
answer = Math.max(answer,sum);
}
else{
DFS(L+1, sum+ps[L],time+pt[L], ps,pt);
DFS(L+1, sum,time, ps,pt);
}
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
n=kb.nextInt(); // 문제의 개수
m=kb.nextInt(); // 제한 시간
int[] a = new int[n];
int[] b = new int[n];
for(int i=0; i<n; i++){
a[i] = kb.nextInt();
b[i]=kb.nextInt();
}
T.DFS(0,0,0,a,b);
System.out.println(answer);
}
}
'ALGORITHM' 카테고리의 다른 글
[JAVA] 알고리즘 : DFS- 조합수(메모이제이션) (0) | 2022.09.23 |
---|---|
[JAVA] 알고리즘 : DFS- 동전 교환 (0) | 2022.09.23 |
[JAVA] 알고리즘 : DFS- 바둑이 승차 (0) | 2022.09.23 |
[JAVA] 알고리즘 : DFS- 합이 같은 부분집합 (0) | 2022.09.22 |
[JAVA] 백준 2108번 - 통계학 (0) | 2022.09.22 |