目录
- 专栏导读
- 一、题目描述
- 二、输入描述
- 三、输出描述
- 四、解题思路
- 1、题目描述
- 2、大白话分析
- 五、Java算法源码
- 六、效果展示
- 1、输入
- 2、输出
- 3、说明
华为OD机试 2023B卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。
一、题目描述
运送的快递放在大小不等的长方体快递盒中,为了能够装载更多的快递同时不能让货车超载,需要计算最多能装多少个快递。
注:
快递的体积不受限制,快递数最多1000个,货车载重最大50000。
二、输入描述
第一行输入每个快递的重量
用英文逗号隔开
如5,10,2,11
第二行输入货车的载重量
如20
三、输出描述
输出最多能装多少个快递。
四、解题思路
能遇到这道题的,赶紧去买彩票,送分题中的送分题。
1、题目描述
运送的快递放在大小不等的长方体快递盒中,为了能够装载更多的快递同时不能让货车超载,需要计算最多能装多少个快递
2、大白话分析
- 给你几个箱子,分别有重量标识;
- 再给你1个货车容量;
- 问你,这个货车最多能装几个箱子。
肯定是先装小的,再装第二小的,基础类推。
五、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机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。