java、python、C代码:
【华为OD】C卷真题 100分:快递运输 Java代码[思路+代码]-CSDN博客
【华为OD】C卷真题 100分:快递运输 python代码[思路+代码]-CSDN博客
【华为OD】C卷真题 100分:快递运输 C语言代码[思路+代码]-CSDN博客
题目描述:
一辆运送快递的货车,运送的快递均放在大小不等的长方体快递盒中,为了能够装载更多的快递,同时不能让货车超载,需要计算最多能装多少个快递。
注:快递的体积不受限制,快递数最多1000个,货车载重最大50000。
输入描述:
第一行输入每个快递的重量,用英文逗号分隔,如:5,10,2,11
第二行输入货车的载重量,如:20
不需要考虑异常输入。
输出描述:
输出最多能装多少个快递,如:3
示例1输入输出示例仅供调试,后台判题数据一般不包含示例
输入
5,10,2,11 20
输出
3
说明
货车的载重量为20,最多只能放三个快递5、10、2,因此输出3
879
+---+
3 | | ++ + +---|
| | | 3 + 6 + | + | +
| + | | + + + | + | +
| + | +---+ + + +++++ + + + | +
| + | + | + +----+ | | + + + | +
| + 3 | + | + + + 2 | | 2 + + + | +
| + | + | + + + | | + + + | +
| +---+ + | | | + ----+ | +---+ | | + | +
| | + | | | + | | | | | | + | +
| 1 | + | 8 | | + 1 | | | 1 | | 1 | | + | +
| | + | | | + | | | | | | | + | +
| +---+ + +---+ | ++---+ ++ +---+ +---+ | + | +
| | + | | | ++ | | |+ | +
|0 | + | 0 | 0 | ++ | 0 | |+ | +
| | + | | | ++ | | |+ | +
+---+ + +-------+ +---+| +|+ | +
+ + | +
0 1 2 3 4 5 6 7 8 9 10 11 12 + v: w u m u 1 0 2 4
题目解析:
排序后,按逻辑处理即可
代码实现:
#include <iostream>
#include <algorithm>
#include <regex>
#include <vector>
#include <sstream>
using namespace std;
vector<int> readArr() {
string arr;
cin >> arr;
istringstream stream(regex_replace(arr, regex(","), " "));
int n;
vector<int> data;
while (stream >> n) {
data.push_back(n);
}
sort(data.begin(), data.end());
return data;
}
int main()
{
auto arr = readArr();
int n;
cin >> n;
int v = 0;
int cnt = 0;
for (auto i : arr) {
if (v + i > n) {
break;
}
else {
v += i;
++cnt;
}
}
cout << cnt << endl;
return 0;
}