一、题目描述
有 5 台打印机打印文件,每台打印机有自己的待打印队列。
因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10不同的优先级,其中数字越大优先级越高。
打印机会从自己的待打印队列中选择优先级最高的文件来打印。
如果存在两个优先级一样的文件,则选择最早进入队列的那个文件。
现在请你来模拟这5台打印机的打印过程。
二、输入描述
每个输入包含 1 个测试用例,每个测试用例第 1 行给出发生事件的数量N(0<N<1000)。
接下来有 N 行,分别表示发生的事件。
共有如下两种事件:
- IN P NUM,表示有一个拥有优先级 NUM 的文件放到了打印机 P 的待打印队列中。(0<P≤5,0<NUM≤10);
- OUT P,表示打印机 P 进行了一次文件打印,同时该文件从待打印队列中取出。(0<P≤5)。
三、输出描述
对于每个测试用例,每次OUT P事件,请在一行中输出文件的编号。
如果此时没有文件可以打印,请输出NULL。文章来源:https://www.toymoban.com/news/detail-467440.html
文件的编号定义为:IN P NUM事件发生第 X 次,此处待打印文件的编号为 X。编号从1开始。文章来源地址https://www.toymoban.com/news/detail-467440.html
四、解题思路
- 读取输入的测试用例数量N。
- 创建一个HashMap,用于存储每个打印机的待打印队列。键是打印机的编号,值是一个包含文件信息的列表。列表中的每个元素是一个整型数组,包含两个元素:文件的优先级和文件的编号。
- 使用一个计数器count,用于
到了这里,关于华为OD机试真题 Java 实现【打印文件】【2023Q1 100分】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!