ALGORITHM

[JAVA] 알고리즘 : DFS- 최대점수 구하기

연듀 2022. 9. 23. 10:11

 

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);
    }
}