题解 | #称砝码#
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); HashSet<Integer> set = new HashSet<>();// 采用集合,不用担心重复问题 set.add(0);// 初始化为0 int n = in.nextInt(); // 个数 int[] w = new int[n]; int[] nums = new int[n]; // 砝码重量 for(int i=0;i<n;i++){ w[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(int k=0;k<list.size();k++){// 对每一种情况都加砝码 set.add(list.get(k)+w[i]*j); } } } System.out.println(set.size()); } }