题解 | #称砝码#
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt(); //砝码种数
int[] m = new int[n]; //砝码重量
int[] x = new int[n]; //砝码数量
for (int i = 0; i < n; i++) {
m[i] = in.nextInt();
}
for (int i = 0; i < n; i++) {
x[i] = in.nextInt();
}
//set(dp[i]):加入砝码i后的重量数,dp[i] = dp[i-1]依次加上k个砝码i
Set<Integer> set = new HashSet<Integer>();
set.add(0);
for (int i = 0; i < n; i++) {
int weight = m[i];
for (int j = 0; j < x[i]; j++) {
Object[] setNums = set.toArray();
for (int k = 0; k < setNums.length; k++) {
set.add((Integer)setNums[k] + weight);
}
}
}
System.out.print(set.size());
}
}

