以下是一个C++实现的示例代码,用于实现电子排班表的功能:
#include <iostream>
#include <list>
using namespace std;
void printSchedule(const list<int>& schedule) {
for (auto it = schedule.begin(); it != schedule.end(); ++it) {
if (it != schedule.begin()) {
cout << "-";
}
cout << *it;
}
cout << endl;
}
int main() {
int n;
cin >> n;
list<int> schedule; // 排班表
for (int i = 0; i < n; ++i) {
string operation;
int barberNumber;
cin >> operation;
if (operation == "assign") {
cin >> barberNumber;
if (barberNumber == 0 || schedule.empty()) {
// 如果顾客未指定理发师或者排班表为空,则由排班表第一位服务
barberNumber = *(schedule.begin());
} else if (!schedule.empty()) {
auto it = find(schedule.begin(), schedule.end(), barberNumber);
if (it == schedule.end()) {
// 若指定理发师不在排班表中,改为由排班表第一位服务
barberNumber = *(schedule.begin());
}
}
// 添加至排班表末尾
schedule.push_back(barberNumber);
} else if (operation == "finish") {
cin >> barberNumber;
// 将完成工作的理发师添加至排班表末尾
auto it = find(schedule.begin(), schedule.end(), barberNumber);
if (it != schedule.end()) {
schedule.erase(it);
schedule.push_back(barberNumber);
}
}
// 输出当前排班表
printSchedule(schedule);
}
return 0;
}
希望这个示例能帮助你理解如何实现电子排班表的功能。
内容由零声教学AI助手提供,问题来源于学员提问




