题解 | #称砝码#

称砝码

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

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int[] m = null;
        int[] x = null;

        int index = 0;
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String line = in.nextLine();
            if ( index == 0 ){
                int len = Integer.parseInt(line);
                m = new int[len];
                x = new int[len];
            }

            if ( index == 1 ){
                String[] ms = line.split(" ");
                for ( int i = 0; i < ms.length; i++){
                    m[i] = Integer.parseInt(ms[i]);
                }
            }

            if ( index == 2 ){
                String[] xs = line.split(" ");
                for ( int i = 0; i < xs.length; i++){
                    x[i] = Integer.parseInt(xs[i]);
                }
                break;
            }

            index ++;
        }

        HashSet<Integer> set = new HashSet<>();
        set.add(0);

        for( int i = 0 ; i < m.length; i++){
            int weight = m[i];
            int num = x[i];
            ArrayList<Integer> list = new ArrayList<>(set);
            while ( num > 0){
                for ( Integer val : list){
                    set.add(val + weight * num);
                }
                num--;
            }
        }

        System.out.print(set.size());

    }

}

全部评论

相关推荐

04-14 20:10
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务