【华为OD机试真题 C++】快递运输 【2022 Q4 | 100分】

前言

■ 题目描述

【快递运输】

运送的快递放在大小不等的长方体快递盒中,为了能够装载更多的快递同时不能让货车超载,需要计算最多能装多少个快递。

注:快递的体积不受限制

快递数最多1000个

货车载重最大50000

输入描述

第一行输入每个快递的重量

用英文逗号隔开

如 5,10,2,11

第二行输入货车的载重量

如 20

输出描述

输出最多能装多少个快递

如 3

示例1 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

5,10,2,11

20

输出

3

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

vector<int> nums;

void getNums(vector<int> &nums) 
{
    char ch;
    int x = 0;
    while (true) {
        ch = getchar();
        if (isdigit(ch)) {
            x = (x << 3 + x << 1) + (ch - 0);
        } else {
            nums.emplace_back(x);
            x = 0;
            if (ch == 
) return;
        }
    }
}

int main() 
{
    getNums(nums);
    int limits;
    std::cin >> limits;
    ll sum = 0;
    ll count = 0;
    sort(nums.begin(), nums.end());
    for (int i = 0; i < nums.size() - 1; i++) {
        sum += nums[i];
        count++;
        if (sum > limits) break;
    }
    std::cout << count << endl;
    return 0;
}
经验分享 程序员 微信小程序 职场和发展