设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的先后次序依次从停车场最里面向大门口处停放 (即最先到达的第一辆车停放在停车场的最里面) 。如果停车场已放满n辆车,则以后到达的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车可以进入停车场。停车场内如有某辆车要开走,则在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费,停留在便道上的车不收停车费。编写程序对该停车场进行管理。先输入一个整数n(n<=10),再输入若干组数据,每组数据包括三个数据项:汽车到达或离开的信息(A表示到达、D表示离开、E表示结束)、汽车号码、汽车到达或离开的时刻。若有车辆到达,则输出该汽车的停车位置;若有车辆离开,则输出该汽车在停车场内停留的时间。如果汔车号码不存在,输出the car not in park
时间: 2024-03-24 08:40:01 浏览: 129
好的,这道题目可以使用队列来实现。
具体思路如下:
1. 定义一个队列来存放停车场内的车辆信息。
2. 每当有车辆到达时,先判断停车场内是否已经停满了车。如果停满了,则将该车辆加入到等待队列中,否则将该车辆加入到停车场队列中,并输出该车辆的停车位置。
3. 每当有车辆离开时,先在停车场队列中查找该车辆的位置,如果找到了,则计算该车辆停留的时间,并将该车辆从停车场队列中删除。如果在停车场队列中没有找到该车辆,则在等待队列中查找该车辆的位置,如果找到了,则将该车辆从等待队列中删除。
4. 每当有车辆结束时,输出停车场内剩余车辆的停留时间,并清空停车场队列和等待队列。
下面是使用 Python 语言实现的代码:
```python
n = int(input()) # 输入停车场的容量
parking = [] # 停车场队列
waiting = [] # 等待队列
while True:
data = input().split()
if data[0] == 'E': # 输入结束,输出剩余车辆停留时间并退出程序
for i in range(len(parking)):
print("车辆 %s 在停车场内停留了 %d 分钟。" % (parking[i][0], int(data[2])-parking[i][1]))
for i in range(len(waiting)):
print("车辆 %s 在等待队列中等待。" % waiting[i][0])
break
if data[0] == 'A': # 车辆到达
if len(parking) < n: # 停车场未满,将该车辆加入停车场队列
parking.append([data[1], int(data[2])])
print("车辆 %s 停在了停车场的第 %d 个位置。" % (data[1], len(parking)))
else: # 停车场已满,将该车辆加入等待队列
waiting.append([data[1], int(data[2])])
print("车辆 %s 进入了等待队列。" % data[1])
elif data[0] == 'D': # 车辆离开
found = False
for i in range(len(parking)):
if parking[i][0] == data[1]: # 在停车场队列中查找该车辆
print("车辆 %s 在停车场内停留了 %d 分钟。" % (data[1], int(data[2])-parking[i][1]))
parking.pop(i) # 将该车辆从停车场队列中删除
found = True
break
if not found:
for i in range(len(waiting)):
if waiting[i][0] == data[1]: # 在等待队列中查找该车辆
print("车辆 %s 在等待队列中等待。" % data[1])
waiting.pop(i) # 将该车辆从等待队列中删除
break
if len(waiting) > 0: # 如果等待队列中有车辆,将等待队列中的第一个车辆加入停车场队列
car = waiting.pop(0)
parking.append(car)
print("车辆 %s 从等待队列中进入了停车场的第 %d 个位置。" % (car[0], len(parking)))
```
这段代码先输入停车场的容量 n,然后进入一个循环,每次输入一组车辆信息。当输入结束时,输出停车场内剩余车辆的停留时间并退出程序。
如果输入的是车辆到达信息,先判断停车场内是否已经停满了车。如果停满了,则将该车辆加入到等待队列中,否则将该车辆加入到停车场队列中,并输出该车辆的停车位置。
如果输入的是车辆离开信息,先在停车场队列中查找该车辆的位置,如果找到了,则计算该车辆停留的时间,并将该车辆从停车场队列中删除。如果在停车场队列中没有找到该车辆,则在等待队列中查找该车辆的位置,如果找到了,则将该车辆从等待队列中删除。如果等待队列中有车辆,将等待队列中的第一个车辆加入停车场队列。
最后,如果输入的是结束信息,输出停车场内剩余车辆的停留时间,并清空停车场队列和等待队列。
阅读全文