蓝桥杯试题 历届真题 砝码称重【第十二届】【java省赛】

蓝桥杯试题 历届真题 砝码称重【第十二届】【java省赛】_第1张图片

蓝桥杯试题 历届真题 砝码称重【第十二届】【java省赛】_第2张图片 

        使用java中的Set 子接口,其特点是元素无序,并且不可重复。

        在遍历set集合的同时修改元素会抛出java.util.ConcurrentModificationException并发修改异常

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

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int length = scanner.nextInt();         //有几个砝码
        HashSet set = new HashSet<>();     //用来去重元素
        List list;     //不可以直接遍历set集合,遍历set时修改元素会产生修改异常,list集合用来遍历
        set.add(scanner.nextInt());     //将输入的第一个重量添加到set集合中
        int twoToEnd;      //在第一个砝码加入之后的所有砝码
        for(int i = 0; i < length - 1; i++){      //因为已经接受了第一个砝码,所以注意循环条件
            twoToEnd = scanner.nextInt();   //接受除第一个输入的砝码重量
            list = new ArrayList<>(set);    //将set集合元素添加到list集合中
            for(Integer others : list){     //遍历list集合中所有元素
                if(others != twoToEnd){     //如果不相等,无脑经过三次运算(+ — 其本身)添加到set集合中
                    set.add(Math.abs(others - twoToEnd));
                }
                set.add(twoToEnd + others);
            }
            set.add(twoToEnd);
        }

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

蓝桥杯试题 历届真题 砝码称重【第十二届】【java省赛】_第3张图片

 

你可能感兴趣的:(蓝桥杯,蓝桥杯,java,职场和发展)