题解 | #称砝码#
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//数据提取
int kind = in.nextInt();
int[] weight = new int[kind];
int[] number = new int[kind];
for(int i=0; i<kind; i++){
weight[i] = in.nextInt();
}
for(int i=0; i<kind; i++){
number[i] = in.nextInt();
}
//申请两个hashset,一个存储最终的,一个存储每一种的临时的
HashSet<Integer> hashSet = new HashSet<Integer>();
hashSet.add(0);
//对每一种砝码遍历
for(int i=0; i<kind; i++){
//每一种砝码创建一个hashSetTemp
HashSet<Integer> hashSetTemp = new HashSet<Integer>();
//根据数量列举出 当前种类 所有可能
for(int j=1; j<=number[i]; j++){
for(Integer oldWeight : hashSet){
hashSetTemp.add(weight[i] * j + oldWeight);
}
//将本次结果存入hashSet,以便后续的种类可以影响到完整的hashSet
}
hashSet.addAll(hashSetTemp);
}
//输出结果
System.out.print(hashSet.size());
}
}
OPPO公司福利 1202人发布