码迷,mamicode.com
首页 > 其他好文 > 详细

称砝码, 华为

时间:2020-07-09 19:21:46      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:ati   integer   lang   基础上   str   solution   scanner   lan   res   

在原有重量基础上增加一种重量的砝码,依次使用0,..., m【i】个,得到新的重量,将这些重量添加到集合中,继续重复。

import java.util.*;
public class Main {
    static int solution(int n, int[] m, int[] x){
        Set<Integer> set = new HashSet<>();
        set.add(0);
        for(int i=0; i < n; i++){
            List<Integer> list = new ArrayList<>();
            for(int j=0; j <= x[i]; j++) {
                int weight = j * m[i];
                for(int w : set) {
                    list.add(w + weight);
                }
            }
            for(int k=0; k < list.size(); k++)
                set.add(list.get(k));
        }
        return set.size();
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            int[] m = new int[n];
            int[] x = new int[n];
            for(int i=0; i < n; i++) 
                m[i] = sc.nextInt();
            for(int i=0; i < n; i++)
                x[i] = sc.nextInt();
            int res = solution(n, m, x);
            System.out.println(res);
        }
    }
}

称砝码, 华为

标签:ati   integer   lang   基础上   str   solution   scanner   lan   res   

原文地址:https://www.cnblogs.com/lixyuan/p/13275302.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!