前面自己写把砝码一字排开了 然后遍历求和放到set中 看了下题解 没必要
用set存放任意组合的砝码重量和 最后set的大小就是不同的重量数的数
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextInt()) { HashSet<Integer> set = new HashSet<>(); set.add(0); int n = in.nextInt(); int[] weights = new int[n]; int[] nums = new int[n]; for (int i = 0; i < n; i++) { weights[i] = in.nextInt(); } for (int i = 0; i < n; i++) { nums[i] = in.nextInt(); } for (int i = 0; i < n; i++) { ArrayList<Integer> list = new ArrayList<>(set); for (int j = 1; j <= nums[i]; j++) { for (Integer l : list) { set.add(l + weights[i] * j); } } } System.out.println(set.size()); } } }