题解 | #称砝码#
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
import java.io.*;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
while ((str = br.readLine()) != null) {
int n = Integer.parseInt(str);
String[] arr1 = br.readLine().split(" ");
String[] arr2 = br.readLine().split(" ");
int[] weights = new int[n];
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
weights[i] = Integer.parseInt(arr1[i]);
}
for (int i = 0; i < n; i++) {
nums[i] = Integer.parseInt(arr2[i]);
}
HashSet<Integer> set = new HashSet<>();
set.add(0);
for (int i = 0; i < n; i++) { //循环砝码种数
ArrayList<Integer> list = new ArrayList<>(set);
for (int j = 1; j <= nums[i]; j++) { //遍历砝码的个数
for (int k = 0; k < list.size(); k++) {
set.add(list.get(k) + weights[i] * j);
}
}
}
System.out.print(set.size());
}
}
}