快递运输

Jacob-Chen / 2024-08-23 / 原文

题目描述

一辆运送快递的货车,运送的快递放在大小不等的长方体快递盒中,为了能够装载更多的快递,同时不能让货车超载,需要计算最多能装多少个快递。
注:快递的体积不受限制,快递数最多1000个,货车载重最大50000

输入描述

第一行输入每个快递的重量,用英文逗号隔开,如 5,10,2,11
第二行输入货车的载重量,如 20

输出描述

输出最多能装多少个快递,如 3
说明:能装的快递重量为:2,5,10 或者 2,5,11

解题思路

  1. 先将数组从小到大排序。
  2. 创建一个变量 sum,用于存放累加值。
  3. 创建一个变量 count,用于记录累加的元素数量。
  4. 遍历排序后的数组,累加遍历值,如果累加后的值大于载重量,则退出遍历。打印 count 值。

代码实现

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String firstLine = sc.nextLine();
        String[] split = firstLine.trim().split(",");
        List<Integer> arr = new ArrayList<>();
        for (String s : split) {
            arr.add(Integer.parseInt(s));
        }
        int pSum = sc.nextInt();

        arr.sort(null);
        int sum = 0, count = 0;
        for (Integer integer : arr) {
            sum += integer;
            if (sum > pSum) {
                break;
            }
            count++;
        }
        System.out.println(count);
    }
}