pta7-2 银行业务队列简单模拟
时间: 2025-05-19 10:42:29 浏览: 21
### PTA 7-2 银行业务队列模拟实现解法
此问题的核心在于通过队列来模拟银行业务窗口的处理过程。以下是基于题目描述的一个具体解决方案。
#### 数据结构设计
为了高效解决该问题,可以采用两个独立的队列分别表示 A 和 B 窗口等待服务的顾客序列。由于 A 窗口的服务效率是 B 的两倍,在每次循环中需按照比例分配资源并更新状态[^1]。
#### 关键逻辑分析
程序的主要流程包括以下几个方面:
1. 初始化输入数据以及定义用于存储结果的列表。
2. 循环判断当前是否有待处理客户,并依据规则决定哪个窗口先完成业务。
3. 当某个窗口完成一位客户的业务后,立即将其加入到最终的结果序列中;如果存在多个窗口同时结束,则遵循“A优先”的原则输出。
下面提供了一个 Python 版本的具体实现:
```python
from collections import deque
def bank_service(customers):
queue_A, queue_B = deque(), deque()
result = []
index = 0
while customers or queue_A or queue_B:
# 添加新来的顾客进入对应队列
if customers and (not queue_A or not queue_B):
customer = customers.pop(0)
if not queue_A:
queue_A.append(customer)
elif not queue_B:
queue_B.append(customer)
served_A = False
served_B = False
# 处理A窗口
if queue_A:
queue_A.popleft()
served_A = True
# 如果A已经服务过一次则尝试B
if queue_B and ((served_A and len(queue_A)==0) or not served_A ):
queue_B.popleft()
served_B = True
# 输出已完成客户服务顺序
if served_A:
result.append('A')
if served_B:
result.append('B')
return ''.join(result)
if __name__ == "__main__":
input_customers = list(input().strip())[::-1]
output_sequence = bank_service(input_customers)
print(output_sequence)
```
上述代码实现了基本的功能需求,即根据不同的服务能力安排合适的调度策略,并记录下实际被服务完毕的次序。
#### 注意事项
在实际编码过程中需要注意边界条件的处理,比如初始状态下可能只有一个窗口可用等情况下的特殊情形管理。
阅读全文
相关推荐
















