华为OD机试真题 Java 实现【查找充电设备组合】【2023Q1 100分】-LMLPHP

一、题目描述

某个充电站,可提供n个充电设备,每个充电设备均有对应的输出功率。任意个充电设备组合的输出功率总和,均构成功率集合P的1个元素。功率集合P的最优元素,表示最接近充电站最大输出功率p_max的元素。

二、输入描述

输入3行:

  1. 第1行为充电设备个数n;
  2. 第2行为每个充电设备的输出功率;
  3. 第3行为充电站最大输出功率p_max;

三、输出描述

功率集合P的最优元素。

四、补充说明

  1. 充电设备个数n>04;
  2. 最优元素必须小于或等于充电站最大输出功率p_max;

五、Java算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    List<Integer> numbers = new ArrayList<>();
    for (int i = 0; i < n; i++) {
        numbers.add(sc.nextInt());
    }
    int p_max = sc.nextInt();

    int max = 0;
    Set<Integer> objects = new HashSet<>();
    objects.add(0);

    for (Integer number : numbers) {
        Set<Integer> objects1 = new HashSet<>();
        for (Integer object : objects) {
            int newobj = object + number;
            if (newobj <= p_max) {
                objects1.add(newobj);
                max = Math.max(max, newobj);
            }
        }
        objects.addAll(objects1);
    }

    System.out.println(max);
}

六、效果展示

1、输入

5
20 30 40 50 60
90

2、输出

90

3、说明

当充电设备输出20、30、40时,其输出功率总和为90,最接近充电站最大充电输出功率,因此最优元素为90。

华为OD机试真题 Java 实现【查找充电设备组合】【2023Q1 100分】-LMLPHP


🏆下一篇:华为OD机试真题 Java 实现【最多提取子串数目】【2023Q1 100分】

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

华为OD机试真题 Java 实现【查找充电设备组合】【2023Q1 100分】-LMLPHP

05-27 09:35