这段代码实现了一个餐馆排队系统的模拟,基于输入的顾客到达时间和用餐时间,在给定的4个餐桌中安排顾客就餐,并计算平均等待时间和最长等待时间。
在方法上,代码使用了贪心算法来选择可用的餐桌或者最短等待时间的餐桌。具体流程如下:
- 读取输入的顾客数量n。
- 创建一个存储所有顾客信息的向量customers。
- 输入每个顾客的到达时间和用餐时间,并为其分配一个ID。
- 创建一个包含4个队列的向量tables,每个队列代表一个餐桌。
- 初始化totalWaitingTime为0,maxWaitingTime为0。
- 遍历顾客数组:
- 尝试找到空闲或者可以使用的餐桌,将当前顾客加入该餐桌队列中;
- 如果没有可用的餐桌,则选择等待时间最短的那个餐桌,并将当前顾客加入该队列中;
- 计算并更新总等待时间totalWaitingTime和最长等待时间maxWaitingTime;
- 更新当前顾客到达时间(加上等待时间),并将其加入相应的餐桌队列中。
- 输出每个餐桌及其对应顾客的ID。
- 计算平均等待时间averageWaitTime和最长等待时间maxWaitingTime,并输出。
在函数上,代码使用了iostream、vector、queue、iomanip和algorithm这些库。其中常用的函数包括cin/cout用于输入输出、vector容器的创建与操作、queue队列的操作以及一些数学计算函数(例如求最大值)。
总之,这段代码通过贪心策略模拟了一个餐馆排队系统,根据顾客到达时间和用餐时间进行安排,并计算了相关统计数据。
内容由零声教学AI助手提供,问题来源于学员提问