C++且不使用vector头文件完成:小明新店开业免费为顾客进行按摩服务现在已经排了一个有 n 个人的队伍其中第 i 个人需要 ti 分钟来服务期间后面的人就要等着。如果一个人等待的时间大于了他被服务的时间他就会失望就会离开队伍。你的任务是重排队伍使失望的人尽量的少并输出最多有多少个不失望的人。输入描述第1行一个整数n表示队伍人数。接下来n行每行一个整数表示第i个人的服务时间ti。输出描述输出一行
思路:
- 将人员按照服务时间从小到大排序。
- 遍历排序后的人员列表,计算每个人等待的总时间。
- 如果等待总时间大于等于当前人的服务时间,则不会失望,将不失望人数加1。
- 输出不失望人数。
代码实现如下:
#include
using namespace std;
int main() { int n; cin >> n;
int* t = new int[n];
for (int i = 0; i < n; i++) {
cin >> t[i];
}
sort(t, t + n);
int totalWaitTime = 0;
int numNotDisappointed = 0;
for (int i = 0; i < n; i++) {
if (totalWaitTime <= t[i]) {
totalWaitTime += t[i];
numNotDisappointed++;
}
}
cout << numNotDisappointed << endl;
delete[] t;
return 0;
原文地址: https://www.cveoy.top/t/topic/h7Vt 著作权归作者所有。请勿转载和采集!