华为OD题目: 查找充电设备组合

2023-11-14

查找充电设备组合

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

输入描述
输入为三行:
第一行为充电设备个数 n。
第二行为每个充电设备的输出功率。
第三行为充电站最大输出功率 p_max。

输出描述
功率集合 P 的最优元素

备注
充电设备个数 n>0
最优元素必须小于或等于充电站最大输出功率 p_max。

示例1
输入:
4
50 20 20 60
90
输出:
90
说明:
当充电设备输出功率50、20、20组合时,其输出功率总和为90,最接近充电站最大充电输出功率,因此最优元素为90.

示例2
输入:
2
50 40
30
输出:
0
说明:
所有充电设备的输出功率组合,均大于充电站最大充电输出功率30,此时最优元素值为0。

package com.darling.boot.order.od.od26;


import java.util.*;


/**
 * 查找充电设备组合
 *
 * 题目描述
 * 某个充电站,可提供 n 个充电设备,每个充电设备均有对应的输出功率。
 * 任意个充电设备组合的输出功率总和,均构成功率集合 P 的 1 个元素。
 * 功率集合 P 的最优元素,表示最接近充电站最大输出功率 p_max 的元素。
 *
 * 输入描述
 * 输入为三行:
 * 第一行为充电设备个数 n。
 * 第二行为每个充电设备的输出功率。
 * 第三行为充电站最大输出功率 p_max。
 *
 * 输出描述
 * 功率集合 P 的最优元素
 *
 * 备注
 * 充电设备个数 n>0
 * 最优元素必须小于或等于充电站最大输出功率 p_max。
 *
 * 示例1
 * 输入:
 * 4
 * 50 20 20 60
 * 90
 * 输出:
 * 90
 * 说明:
 * 当充电设备输出功率50、20、20组合时,其输出功率总和为90,最接近充电站最大充电输出功率,因此最优元素为90.
 *
 * 示例2
 * 输入:
 * 2
 * 50 40
 * 30
 * 输出:
 * 0
 * 说明:
 * 所有充电设备的输出功率组合,均大于充电站最大充电输出功率30,此时最优元素值为0。
 *
 * 解题思路:
 * 用一个set来存放各种功率的组合,一开始set里面得有一个元素0,因为 当前功率P+0=P,用来方便遍历用的
 * 然后是两层for循环,第一层遍历数组的功率,中间还得临时加一个tempSet,为了防止一边遍历,一边前面set还会增加
 * 具体见下面的代码
 *
 */
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String numStr = sc.nextLine();
        int n = Integer.parseInt(numStr);

        String line2 = sc.nextLine();
        String[] split = line2.split(" ");

        String line = sc.nextLine();
        int pMax = Integer.parseInt(line);
        //使用此set来存放各种组合的输出功率总和
        Set<Integer> set = new HashSet<>();
        set.add(0);
        for (String str : split) {
            int curP = Integer.parseInt(str);
            Set<Integer> tempSet = new HashSet<>();
            for (int preAddP : set) {
                int newAddP = curP + preAddP;
                if (newAddP == pMax) {
                    System.out.println(pMax);
                    return;
                }
                if (newAddP < pMax) {
                    tempSet.add(newAddP);
                }
            }
            set.addAll(tempSet);
        }
        //因为一开始加了一个0进去了,如果只有一个元素,那么输出0
        if (set.size() == 1) {
            System.out.println(0);
            return;
        }
        //对set进行降序排列,取第一个
        List<Integer> list = new ArrayList<>(set);
        list.sort((a1, a2) -> a2 - a1);
        System.out.println(list.get(0));


    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华为OD题目: 查找充电设备组合 的相关文章

随机推荐

  • 经验分享:如何运用R的MICE包对数据集中不同变量采用不同方法及跳过部分变量进行多重插补

    运用R的MICE包对数据集进行多重插补 multiple imputation 遇到两个具体需求 1 只需针对缺失值较高的部分变量而不是全部变量进行填充 但仍想将全部变量纳入数据集中 2 对于不同的具体变量 采用不同的多重插补具体方法 如处
  • 微信小程序——如何获取到输入框的值

    在微信小程序中 可以通过以下几种方式来获取输入框的值 使用 bindinput 绑定输入事件 通过 event detail value 获取输入框的值 具体操作如下
  • 拔叉零件的加工工艺,设计18铣槽的铣床夹具

    目 录 一 序言 1 二 零件的分析 3 1 零件的作用 3 2 零件的工艺分析 3 三 确定毛坯 4 四 工艺规程设计 5 五 夹具设计 14 六 总结 17 七 参考文献 18 一 序 言 机械制造工艺学课程设计使我们学完了大学的全部基
  • mock拦截axios请求,以及axios请求拦截设置token

    直接上源码
  • 投中网发布!持安科技荣登中国企业服务产业最佳投资案例TOP10

    近日 2022年度投中榜发布 持安科技凭借业内领先的零信任产品创新力 出众的方案落地实力及广阔的市场发展潜力 成功入选 投中2022年度中国企业服务产业最佳投资案例TOP10 投中榜 是投中信息秉承专业 严谨 客观 公正的原则 对中国私募股
  • 算法通过村第八关-树(深度优先)白银笔记

    文章目录 前言 1 最大深度问题 2 判断平衡树 3 最小深度 4 N叉树的最大深度 总结 前言 提示 我的整个生命 只是一场为了提升社会地位的低俗斗争 埃莱娜 费兰特 失踪的孩子 这一关我们看一些比较特别的题目 关于二叉树的深度和高度问题
  • 笔记-Flutter 之点击空白处取消TextField焦点

    本人是做iOS开发的 点击空白处取消TextField焦点这个需求是非常简单的 在学习Flutter过程中 面对这个需求走了不少弯路 现在得到了一个感觉不错的解决方案 这里和大家分享一下 也希望对小伙伴们有所帮助 GestureDetect
  • 程序设计语言-软件设计(二十一)

    数据结构与算法 二十 快速排序 堆排序 四 https blog csdn net ke1ying article details 129269655 这篇主要讲的是 编译与解释 文法 正规式 有限自动机 表达式 传值与传址 多种程序语言特
  • Taylor公式和插值多项式

    Taylor公式和插值多项式 笔记总结自 复旦大学 陈纪修 数学分析 课程 第5章第3节 Taylor公式和插值多项式 文章目录 Taylor公式和插值多项式 一 Taylor公式 带Peano余项的Taylor公式 带Lagrange余项
  • java代码实现分页_Java分页实现(示例代码)

    首先我们要清楚java分页的思路 第一我们要明白前端页面需要向java后台传递当前页码数以及每页显示多少条数据 第二java后台代码需要向前端页面传递每页显示的数据 以及总条数以及总页数 代码如下 首先我们要创建一个分页类用来存储数据 pu
  • 汇编——寄存器的分类和功能

    在汇编中 个人感觉最重要的部分其实就是寄存器了 这次我们了解一下寄存器的分类和功能 先说一下寄存器是什么吧 其实就是一部分的空间 我们可以使用这些空间来存储内容 寄存器的空间都是16位的 80x86中 后来有增长 也就是1个字的空间 堆栈则
  • Google Earth Engine(GEE) 03-矢量数据类型

    Google Earth Engine GEE 03 矢量数据类型 GEE基本语法 Geometry Dictionary Feature和FeatureCollection之间的关系 Dictionary Feature 常用函数 Fea
  • day--03springmvc

    回顾 1 响应 页面跳转 controller方法的字符串返回值 使用Model对象进行数据共享 默认是存储在request域对象中 使用ModelAndView对象 直接响应数据 controller方法返回的是普通字符串 control
  • 记录ncnn导出模型的权重读取的一点思路

    ncnn的 param和 bin文件的读取 参考这个基本上可以触类旁通 前言 大概找了找全网使用ncnn框架导出权重模型的博客 可以参考的只有2篇 一篇过时了 没法儿使用 另一篇的函数重载似乎提及了也没什么用处 因为另一篇提到的函数重载事实
  • 旧电脑 存储服务器 系统,爷爷级PC,用白菜价内存搭建内存硬盘操作系统,老系统飞起来。...

    认识众多玩家高手 拆客 DIY爱好者 查阅更多资源 一起学习技术知识 您需要 登录 才可以下载或查看 没有帐号 立即注册 x 爷爷级PC 用白菜价内存搭建内存硬盘操作系统 老系统飞起来 系统配置 内存硬盘1 png 55 33 KB 下载次
  • nodejs:webstrom调试及使用nodemon

    参考 webstrom调试及使用nodemon 提示 如果项目有nodemon json 参数类似上图 运行时可能会提示 ts node不是内部或外部命令 也不是可运行的程序 这时候需要 npm i g ts node
  • 错误隐藏学习手记(二)

    错误隐藏技术是在H 264在解码端后端的一种技术 用于恢复某一丢失帧或者宏块 一般来说每个宏块是16 16 Step1 我们怎么知道是哪一块宏块丢失了呢 这就和视频编解码H 264有些关系了 JM86中丢失块的确定取决于编码端灵活宏块重排模
  • 巴比特

    摘要 近日 据路透社报道 三位知情人士称 腾讯控股正在与脸书母公司Meta Platforms Inc Nasdaq META 就在中国销售Meta Quest系列虚拟现实头显进行谈判 路透社援引消息人士称 腾讯与Meta之间的谈判从去年开
  • 规范国内省份名称【Java】

    规范省份名称 param ipAddr 要规范的省份名称 return String public static String addressJiaoyan String ipAddr 4个直辖市 String zxs 北京 天津 上海 重
  • 华为OD题目: 查找充电设备组合

    查找充电设备组合 题目描述 某个充电站 可提供 n 个充电设备 每个充电设备均有对应的输出功率 任意个充电设备组合的输出功率总和 均构成功率集合 P 的 1 个元素 功率集合 P 的最优元素 表示最接近充电站最大输出功率 p max 的元素