我的作业是通过让用户以这种格式输入来创建priorityqueue
病例数
案例类型案例ID优先级
以1为最高优先级
Example.
16
I 0 2
I 1 2
D
I 3 3
I 4 1
D
I 6 1
D
I 8 1
D
I 10 2
I 11 1
I 12 3
I 13 2
I 14 3
I 15 2
(我是指正常情况,D是指确定当时的最高优先级),然后按优先级打印剩余的caseID
这是我的密码
import heapq
priority=[]
num=int(input())
for i in range (0,num,1):
temp=input()
if (len(temp)>1):
casetype,caseID,casePrio,=temp.split(" ",2)
heapq.heappush(priority, (int(caseID),int(casePrio)))
else:
heapq.heappop(priority)
for i in range(len(priority)):
print (priority[i][1])
我希望得到这个结果
Output:
11
1
10
13
15
3
12
14
但是换成这个
Output:
11
1
10
15
12
13
14
3
优先级队列的整体思想是,当您弹出某个内容时,它将为您提供当前在队列中的最高优先级的项目。你不需要自己分类。那只是做额外的工作。你知道吗
如果要按优先级顺序输出队列的其余部分,可以将最终循环替换为:
对
heappop
的每次调用都将返回仍在队列中的最高优先级项。你知道吗但是,不要指望得到你期望的结果。
heapq
不保证具有同等优先级的项的删除顺序。例如,如果要按以下顺序插入项目:然后删除它们,结果将是
10 11 12 13
。但如果将插入顺序更改为:然后输出将是
10 12 11 13
。你知道吗相关问题 更多 >
编程相关推荐