以下是一个简单的解决理发师问题的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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录