快遞運輸【Java】
【題目描述】
一輛運送快遞的貨車,運送的快遞均放在大小不等的長方體快遞盒中,為了能夠裝載更多的快遞,同時不能讓貨車超載,需要計算最多能裝多少個快遞。
快遞的體積不受限制,快遞數最多1000個,貨車載重最大50000。
【輸入描述】
第一行輸入每個快遞的重量,用英文逗号分隔,如:5,10,2,11
第二行輸入貨車的載重量,如:20
不需要考慮異常輸入
【輸出描述】
輸出最多能裝多少個快遞,如:3
【示例一】
- 輸入
5,10,2,11 20
- 輸出
-
說明
貨車的載重量為20,最多隻能放三個快遞5、10、2,是以輸出3
【解題思路】
- 此題目的是盡可能的多裝在快遞個數,是以,小包裹優先裝載
- 升序排列,從小到大依次疊加。并與貨車載重量比較。沒疊加一次計算一個快遞
【代碼】
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String content = input.nextLine();
int max = input.nextInt();
String[] split = content.split(",");
if (split.length == 0) {
System.out.println(0);
return;
}
int[] nums = new int[split.length];
for (int i = 0; i < split.length; i++) {
nums[i] = Integer.parseInt(split[i]);
}
Arrays.sort(nums);// 升序排列
int count = deal(nums, max);
System.out.println(count);
}
private static int deal(int[] nums, int max) {
int sum = 0;
int count = 0;
for (int num : nums) {
if (num + sum < max) { // 依次疊加判斷
count++;// 統計個數
sum += num;
}
}
return count;
}
}