题解 | 【模板】完全背包
【模板】完全背包
https://www.nowcoder.com/practice/237ae40ea1e84d8980c1d5666d1c53bc
import java.util.Scanner; import java.util.*; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) { int a = in.nextInt(); int b = in.nextInt(); int[] val = new int[a]; int[] weight = new int[a]; for (int i = 0; i < a; i++) { val[i] = in.nextInt(); weight[i] = in.nextInt(); } int[] jiazhi = new int[b + 1]; for (int i = 1; i <= b; i++) { for (int i1 = 0; i1 < val.length; i1++) { if (i >= val[i1]) { jiazhi[i] = Math.max(jiazhi[i], jiazhi[i - val[i1]] + weight[i1]); } } } System.out.println(jiazhi[b]); Arrays.fill(jiazhi, Integer.MIN_VALUE); jiazhi[0] = 0; for (int i = 1; i <= b; i++) { for (int i1 = 0; i1 < val.length; i1++) { if (i >= val[i1]) { jiazhi[i] = Math.max(jiazhi[i], jiazhi[i - val[i1]] + weight[i1]); } } } if (jiazhi[b] < 0) { jiazhi[b] = 0; } System.out.println(jiazhi[b]); } } }