第二题:public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int goodsNum = in.nextInt();
int bag = in.nextInt();
int[] goodsWei = new int[goodsNum];
int[] goodsVal = new int[goodsNum];
for (int i = 0; i < goodsNum; i++) {
goodsWei[i] = in.nextInt();
}
for (int i = 0; i < goodsNum; i++) {
goodsVal[i] = in.nextInt();
}
System.out.println(findMaxVal(goodsWei, goodsVal, 0, bag));
}
private static int findMaxVal(int[] goodsWei, int[] goodsVal, int index, int bag) {
if (bag < 0) {
return -1;
}
if (index >= goodsVal.length) {
return 0;
}
int v1 = findMaxVal(goodsWei, goodsVal, index + 1, bag);
int v2 = findMaxVal(goodsWei, goodsVal, index + 1, bag - goodsWei[index]);
int v3 = 0;
if (v2 != -1) {
v3 = goodsVal[index] + v2;
}
return Math.max(v1, v3);
}