题解 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());
    }
}

搞了一个夜晚 草 不过最好好歹是按照自己的想法做出来了 可喜可贺

全部评论

相关推荐

存一千万就可以进大厂实习
石圪节公社发型师:有存一千万的实力还实习个嘚,直接躺平
点赞 评论 收藏
分享
你背过凌晨4点的八股文么:简历挂了的话会是流程终止,像我一样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务