题解 HJ41| #称砝码#
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Scanner; import java.util.Set; import java.util.stream.Collectors; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int count = Integer.valueOf(in.nextLine()); String[] arr1 = in.nextLine().split(" "); String[] arr2 = in.nextLine().split(" "); List<Integer> all = new ArrayList<>(); for (int i = 0; i < count; i++) { for (int j = 0; j < Integer.valueOf(arr2[i]); j++) { all.add(Integer.valueOf(arr1[i])); } } all = all.stream().sorted().collect(Collectors.toList()); Set<Integer> result = new HashSet<>(); result.add(0); result.add(all.get(0)); // 从第二个开始 for (int i = 1; i < all.size(); i++) { Set<Integer> current = new HashSet<>(); //result中所有元素+all.get(i) for (Integer item : result) { current.add(item + all.get(i)); } result.addAll(current); } System.out.println(result.size()); } }
搞了一个夜晚 草 不过最好好歹是按照自己的想法做出来了 可喜可贺