请给出一段解决理发师问题的c++代码
以下是一个简单的解决理发师问题的C++代码,使用了队列和循环结构:
#include <iostream>
#include <queue>
using namespace std;
int main() {
int n, m;
cin >> n >> m; // 输入理发师数量和顾客数量
queue<int> q; // 顾客队列
for (int i = 1; i <= m; i++) {
int t;
cin >> t; // 输入每个顾客需要理发的时间
q.push(t); // 将顾客加入队列
}
int ans = 0; // 记录总等待时间
vector<int> barbers(n, 0); // 记录每个理发师的剩余时间
while (!q.empty()) { // 当顾客队列不为空时
int min_time = barbers[0];
int min_index = 0;
for (int i = 1; i < n; i++) {
if (barbers[i] < min_time) {
min_time = barbers[i];
min_index = i;
}
}
// 找到空闲时间最短的理发师
int t = q.front();
q.pop();
ans += min_time;
barbers[min_index] = min_time + t; // 更新理发师的剩余时间
}
cout << ans << endl; // 输出总等待时间
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/ffmz 著作权归作者所有。请勿转载和采集!