编辑代码

import java.util.*;

public class Main{
    static int N;
    static int M;
    static int[] dp;
    static int[] state;
    static int ans;
    public static void main(String[] args)
    {
        Scanner scan = new Scanner(System.in);
        N = scan.nextInt();//N = 4
        M = scan.nextInt();//M = 5
        dp = new int[N+1];
        state = new int[N+1];
        int sum = 0;
        for(int i = 1;i<N+1;i++)
        {
            int w = scan.nextInt();
            int u = scan.nextInt();
            state[i] = w;
            dp[i] = u;
        }
        dfs(1,0,0);
        System.out.println(ans);
    }
    public static void dfs(int k,int sp,int value)
    {
        if(k>N+1||sp>M)
        {
            return;
        }
        if(k==N+1&&sp<=M)
        {
            ans = Math.max(ans,value);
            return;
        }
        for(int i =0;i<1;i++)
        {
            dfs(k+1,sp+state[k],value+dp[k]);
            dfs(k+1,sp,value);
        }
    }
}