题解 | #称砝码#

称砝码

https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c

import java.util.*;
/**
一些题解说的太复杂了,这题最简单就是顺推  举例情况 
2
1 2
2 1
不选砝码 为 0 一种情况
到重量为1的砝码,其实就是在之前的情况上叠加  目前的总情况 【0】
重量为1的砝码 与 情况1 总重量为1 叠加  总重量 1 总情况有增加
2个重量为1的砝码 与 情况1 总重量为2 叠加  总重量是 2 总情况有增加

情况就变成了3种,目前总重量的情况 【0,1,2】

到重量为2的砝码,其继续之前的情况上叠加 
重量为2的砝码 与 情况1 总重量为0 叠加  总重量还是 2 总情况没有增加
重量为2的砝码 与 情况2 总重量为3 叠加  总重量还是 3 总情况有增加
重量为2的砝码 与 情况3 总重量为4 叠加  总重量还是 4 总情况有增加

目前总重量的情况 【0,1,2,3,4】
分析到这里,其实就是把思路改为代码,已经很简单了
*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int anInt = scanner.nextInt();
        List<Integer> weights = new ArrayList<>();
        List<Integer> numbers = new ArrayList<>();
        int start = 0;
        while (start++ < anInt) {
            weights.add(scanner.nextInt());
        }
        start = 0;
        while (start++ < anInt) {
            numbers.add(scanner.nextInt());
        }
        Set<Integer> set = new HashSet<>(); //这就是之前的重量情况
        set.add(0);
        for (int i = 0; i < weights.size(); i++) {
            Integer number = numbers.get(i);
            int weight = weights.get(i);
            for (int j = 0; j < number; j++) {
                HashSet<Integer> hashSet = new HashSet<>(set);
                for (Integer integer : hashSet) {
                    set.add(weight + integer);
                }
            }
        }
        System.out.println(set.size());
    }
}

全部评论
23届了,怎么还在刷题,已经工作了吧
点赞 回复 分享
发布于 2023-07-21 18:20 湖南

相关推荐

我现在一边实习、一边准备秋招,还在考公。实习工作比较轻松,闲暇时投投简历,但每天都不知道自己在干嘛,感觉很空虚。开始备考后,心里突然安定下来,仿佛找到了高考前的目标,每天都有新知识进脑,心态也变得平和。与其全心投入秋招,不如利用时间充实自己,学习一些感兴趣的东西。当然,拿到offer当然好,没拿到也至少能收获成长。人生是自己的,疲惫时按下暂停键,保持对生活的热情才是最重要的!
牛客728883471号:主要是牛客上的程序员偏多,对程序员来说,进一步跟退一步差别可就太大了。同样的985硕,找到好一点的工作能年薪60多万,运气差一点可能offer都接不到。不像咱们传统制造业,好的坏的工作收入差异没这么大。我以前读的土木更是,哪有什么人去实习,大四快毕业还有半年了才开始找。最后有的去工地当监理,有的保/考研,有的去银行,有的考公,有的回老家当村官。都是一个月几千块,差别不大
点赞 评论 收藏
分享
shtdbb_:还不错,没有让你做了笔试再挂你
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务