华为OD机试 - 快递运输 - 送分题(Java 2023 B卷 100分)-LMLPHP

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

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

注:

快递的体积不受限制,快递数最多1000个,货车载重最大50000。

二、输入描述

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

用英文逗号隔开

如5,10,2,11

第二行输入货车的载重量

如20

三、输出描述

输出最多能装多少个快递。

四、解题思路

能遇到这道题的,赶紧去买彩票,送分题中的送分题。

1、题目描述

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

2、大白话分析

  1. 给你几个箱子,分别有重量标识;
  2. 再给你1个货车容量;
  3. 问你,这个货车最多能装几个箱子。

肯定是先装小的,再装第二小的,基础类推。

五、Java算法源码

package com.guor.od;

import java.util.*;

public class OdTest {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 每个快递的重量
        int[] arr = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();
        // 货车的载重量
        int capacity = sc.nextInt();

        // 从小到大排序
        Arrays.sort(arr);

        // 货物总重量
        int total = 0;
        // 最多能装多少个快递
        int sum = 0;
        // 遍历每个快递的重量
        for (int weight : arr) {
            // 货物总重量 + 当前货物重量 <= 货车的载重量,继续装
            if (total + weight <= capacity) {
                total += weight;
                sum += 1;
            }
        }
        System.out.println(sum);
    }
}

六、效果展示

1、输入

5,10,2,11
20

2、输出

3

3、说明

华为OD机试 - 快递运输 - 送分题(Java 2023 B卷 100分)-LMLPHP


🏆下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

华为OD机试 - 快递运输 - 送分题(Java 2023 B卷 100分)-LMLPHP

09-26 10:31