前面自己写把砝码一字排开了 然后遍历求和放到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());
}
}
}

京公网安备 11010502036488号