题解 | #称砝码#

称砝码

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

主要思路:遍历所有的情况存入Set里进行重复性过滤,最后Set的大小就是结果

情况遍历:动态规划思想,进行遍历。

代码如下:

import java.util.*;

public class Main { public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    int num=sc.nextInt();
    ArrayList<Integer> m=new ArrayList<>();
    ArrayList<Integer> n=new ArrayList<>();
    HashSet<Integer> result=new HashSet<>();
    result.add(0);
    for (int i=0;i<num;i++){                                //存入质量
        int g=sc.nextInt();
        m.add(g);
    }
    for (int i=0;i<num;i++){                                //存入对应的数量
        int g=sc.nextInt();
        n.add(g);
    }

    for(int i=0;i<num;i++){                               
        ArrayList<Integer> list=new ArrayList<>(result);    //进行遍历,首先利用List的可重复性防止遗漏情况,
        for (Integer integer : list) {                      //对已有结果再加上下一种砝码的质量。
            for(int j=1;j<=n.get(i);j++){
                result.add(integer+m.get(i)*j);            
            }
        }

    }
    System.out.println(result.size());
}

}

全部评论

相关推荐

10-25 23:12
门头沟学院 Java
点赞 评论 收藏
分享
评论
6
2
分享
牛客网
牛客企业服务