题解 | #称砝码#,看了别人的才知道可以这么玩,有意思
称砝码
http://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int n = in.nextInt();
int[] g = new int[n];
for (int i = 0; i < g.length; i++) {
g[i] = in.nextInt();
}
int[] number = new int[n];
for (int i = 0; i < number.length; i++) {
number[i] = in.nextInt();
}
HashSet<Integer> set = new HashSet<>();
set.add(0);
// 遍历砝码
for (int i = 0; i < g.length; i++) {
ArrayList<Integer> list = new ArrayList<>(set);
// 遍历个数
for (int j = 1; j <= number[i]; j++) {
// 从一个砝码往上加
for (int k = 0; k < list.size(); k++) {
// 每个数量的砝码都会去匹配
set.add(list.get(k) + g[i] * j);
}
}
}
System.out.println(set.size());
}
}
}