我觉得我这里写的比较巧妙的:
利用vector的动态伸长的性质来实现目前箱子容量不够用就新开一个箱子来使用
最后vector容器的长度便是需要箱子的总数量
for(int i = 0; i < box.size(); i++) {
if(box[i] >= num) {
cout << num << ' ' << i + 1 << endl;
box[i] -= num;
break;
}else if(i == box.size() - 1) box.push_back(100);
}
循环条件也是依据数据情况调整
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> list;
vector<int> box;
box.push_back(100);
for(int i = 0; i < n; i++) {
int temp;
cin >> temp;
list.push_back(temp);
}
int count = 0;
for(auto& num: list) {
for(int i = 0; i < box.size(); i++) {
if(box[i] >= num) {
cout << num << ' ' << i + 1 << endl;
box[i] -= num;
break;
}else if(i == box.size() - 1) box.push_back(100);
}
}
cout << box.size();
return 0;
}