第二题: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); }
点赞 评论

相关推荐

强大的马里奥:不太可能,我校计算机硕士就业率99%
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务