首页 > 编程语言 >【华为OD机试】真题B卷-最大花费金额(C++)

【华为OD机试】真题B卷-最大花费金额(C++)

时间:2024-03-12 20:59:01浏览次数:27  
标签:totalCost 示例 真题 items OD C++ int 总费用 include

华为OD机试真题汇总目录

    【华为OD机试】真题汇总A+B+C+D券(Python实现)

    【华为OD机试】真题汇总A+B+C+D卷(JAVA实现)

    【华为OD机试】真题汇总A+B+C+D卷(C++实现)

一、题目

题目描述:

双十一众多商品进行打折销售,小明想购买自己心仪的一些物品,但由于受购买资金限制,所以他决定从众多心仪商品中购买三件,而且想尽可能的花完资金。
现在请你设计一个程序帮助小明计算尽可能花费的最大资金数额。

二、输入输出

输入描述:
输入第一行为一维整型数组M,数组长度小于100,数组元素记录单个商品的价格,单个商品价格小于1000。输入第二行为购买资金的额度R,R小于100000。
输出描述:
输出为满足上述条件的最大花费额度。
注意:
如果不存在满足上述条件的商品,请返回-1。

三、示例

示例1:
输入输出示例仅供调试,后台判题数据一般不包含示例
输入:
23,26,36,27
78
输出:
76
说明:
金额23、26和27相加得到76,而且最接近且小于输入金额78。
示例2:
输入输出示例仅供调试,后台判题数据一般不包含示例
输入:
23,30,40
26
输出:
-1
说明:
因为输入的商品,无法组合出来满足三件之和小于26.故返回-1。
备注:
输入格式是正确的,无需考虑格式错误的情况。

四、解题思路

  1. 读取输入的商品名称和目标金额。
  2. 将商品名称分割存储到 items 向量中。
  3. 生成所有可能的三个商品组合。
  4. 遍历所有组合,计算总费用,找到不超过目标金额的最大总费用。
  5. 如果找到总费用等于目标金额的组合,直接返回目标金额。
  6. 如果没有找到等于目标金额的组合,返回不超过目标金额的最大总费用,如果没有找到符合条件的组合,则返回 -1。

五、参考代码

/*
 * @#coding: utf-8
 * @Author: mgc
 * @Date: 2024-02-02 17:47:00
 * @LastEditors: Do not edit
 * @LastEditTime: 2024-02-02 17:48:55
 */

// #include<set>
// #include<map>
// #include<list>
// #include<regex>
// #include<cmath>
// #include<queue>
// #include<stack>
// #include<bitset>
// #include<utility>
// #include<stdlib.h>
// #include<string.h>


#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>

using namespace std;

// 寻找最大总费用
int findMaxTotalCost() {
    string inputLine;
    getline(cin, inputLine);
    int targetMoney;
    cin >> targetMoney;
    int maxCost = 0;
    vector<string> items;
    string item;
    stringstream ss(inputLine);

    // 将输入的商品名称存储到 items 向量中
    while (getline(ss, item, ',')) {
        items.push_back(item);
    }

    vector<vector<string>> cases;
    sort(items.begin(), items.end());

    // 生成所有可能的组合
    do {
        cases.push_back({items[0], items[1], items[2]});
    } while (next_permutation(items.begin(), items.end()));

    // 遍历所有组合,计算总费用,找到不超过目标金额的最大总费用
    for (auto case_ : cases) {
        int totalCost = stoi(case_[0]) + stoi(case_[1]) + stoi(case_[2]);
        if (totalCost == targetMoney) {
            return targetMoney;
        }
        if (targetMoney > totalCost && totalCost > maxCost) {
            maxCost = totalCost;
        }
    }

    // 返回结果
    if (maxCost == 0) {
        return -1;
    } else {
        return maxCost;
    }
}

int main() {
    int totalCost = findMaxTotalCost();
    cout << totalCost << endl;
    return 0;
}

标签:totalCost,示例,真题,items,OD,C++,int,总费用,include
From: https://blog.csdn.net/u014481728/article/details/136661578

相关文章

  • ListModelSerializer模块 LL
    自定义反序列化字段#一些只参与反序列化的字段,但是不是与数据库关联的#在序列化类中规定,并在校验字段时从校验的参数字典中剔除classPublishModelSerializer(serializers.ModelSerializer):#自定义不入库的反序列化字段re_name=serializers.CharField(writ......
  • 【华为OD机试】真题B卷-分班问题(JAVA)
    华为OD机试真题汇总目录  【华为OD机试】真题汇总A+B+C+D券(Python实现)  【华为OD机试】真题汇总A+B+C+D卷(JAVA实现)  【华为OD机试】真题汇总A+B+C+D卷(C++实现)一、题目题目描述:幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小......
  • 掌握MongoDB,看完这篇文章就够了!!!
    目录1.MongoDB简介2.MongoDB安装3.MongoDB操作3.1数据库相关3.2集合相关3.3数据相关4.MongoDB查询5.MongoDB常用技术6.Python与MongoDB1.MongoDB简介MongoDB是一种NoSQL数据库管理系统,采用文档数据库模型,由MongoDBInc.开发并发布。作为一个面向文档的数据库,Mo......
  • SimpleUI [12/Mar/2024 19:32:11] "GET /admin/logout/ HTTP/1.1" 405 0 Method Not
    Django使用SimpleUI后,登出报错[12/Mar/202419:32:11]"GET/admin/logout/HTTP/1.1"4050MethodNotAllowed(GET):/admin/logout/MethodNotAllowed:/admin/logout/[12/Mar/202419:36:20]"GET/admin/logout/HTTP/1.1"4050原因升级到5.0后不......
  • Mongodb的CRUD操作
    目录一、插入文档1、插入单个文档2、插入多个文档二、查询文档1、查询某个集合所有文档2、根据条件查询三、更新文档1、更新单个文档2、更新多个文档四、删除文档1、删除所有文档2、删除所有符合条件的文档3、仅删除一个符合条件的文档4、删除集合中某个字段Mon......
  • Practical Learned Lossless JPEG Recompression with Multi-Level Cross-Channel Ent
    目录简介模型DCTCoefficientsRearrangement将系数重排Cross-ColorEntropyModelMatrixContextModelMulti-LevelCross-ChannelEntropyModel创新点实验设置训练数据集:测试数据集:训练细节:结果简介JPEG是一种非常流行的压缩方法,然而最近关于图像压缩的研究主要集中在未压......
  • C++看程序写结果 虚函数、构造、析构、初始化列表
    虚函数、构造、析构、初始化列表#include<iostream>usingnamespacestd;classBase{public:Base(constchar*p_szName):m_szName(p_szName){cout<<"Base类构造:"<<m_szName<<","<<endl;}virtual~Base(){cout......
  • HDFS读数据流程、NN和2NN工作机制、DataNode工作机制、数据完整性
    HDFS读数据流程    事件描述:客户端要下载一个200m的数据文件,hdfs是如何读取的。   两个对象:一个客户端、一个集群   流程:       1.客户端创建一个分布式文件系统(DistributedFileSystem),向集群NameNode请求下载文件。       ......
  • 2024-03-12 leetcode写题记录
    目录2024-03-12leetcode写题记录160.相交链表题目链接题意解法解法一解法二2024-03-12leetcode写题记录160.相交链表题目链接160.相交链表题意给你两个单链表的头节点\(headA\)和\(headB\),请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回\(nu......
  • nodejs base64 转存图片文件
     nodejsbase64转存图片文件在Node.js中,您可以使用内置的fs模块来将Base64编码的字符串转换为图片文件。以下是一个简单的例子,展示如何将Base64字符串转换为PNG图片文件:  constfs=require('fs'); //假设您有一个Base64编码的字符串constbase64Stri......