题解 | #称砝码#

称砝码

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

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int total = in.nextInt();
        int[] weights = new int[total];
        int[] num = new int[total];
        for(int i=0; i<total;i++) {
            weights[i] = in.nextInt();
        }
        for(int i=0; i<total;i++) {
            num[i] = in.nextInt();
        }
        System.out.println(selectWeight(weights, num, total-1).size());
    }

    private static Set<Integer> selectWeight(int[] weights,
            int[] num,
            int i) {
        Set<Integer> s = new HashSet();
        if (i == 0) {
            for (int index = 0; index <= num[i]; index++) {
                s.add(weights[i] * index);
            }
            return s;
        }
        Set<Integer> prefixSet = selectWeight(weights, num, i - 1);    
        for (int index = 0; index <= num[i]; index++) {
            for(Integer item: prefixSet) {
                s.add(weights[i] * index + item);
            };
        }
        return s;
    }
}

全部评论

相关推荐

05-19 15:21
已编辑
华南农业大学 Java
白火同学:你才沟通了200,说实话,北上广深杭这里面你连一座城市的互联网公司都没投满呢,更别说还有各种准一线二线城市了。等你沟通突破了三位数,还没结果再考虑转行的事吧。
点赞 评论 收藏
分享
野猪不是猪🐗:我assume that你must技术aspect是solid的,temperament也挺good的,however面试不太serious,generally会feel style上不够sharp
面试吐槽bot
点赞 评论 收藏
分享
本神尊:看来是没招到小红薯上的人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务