【华为OD机试真题 python】打印任务排序

华为机试真题实战应用【赛题代码篇】-打印任务排序(附Java、Python和C++代码) 如果输入一行2 3 5 3 4这样一行数据,目标任务为位列第二的“3”,那么按照打印机的思路,它会试图找到最大优先级的5打印出来,在这个过程中,原任务序列中排在“5”前面的“2 3”以不变的顺序,放到了“5”后面的“3 4”。但是由于重组数据之后,会找不到原来的目标打印任务所在的位置,所以在一开始还需要对目标任务进行标记,考虑到重组数据的时候,插入字母不会影响别的数组的顺序,笔者在目标任务“3“前面插入字母”p“,这样直到所有的4打印完,p仍然紧跟目标任务。最后打印剩下的优先级为1的任务,其序号为2。 阅读详情

题目描述

  • 某个打印机根据打印队列执行打印任务。打印任务分为九个优先级,分别用数字1-9表示,数字越大优先级越高。打印机每次从队列头部取出第一个任务A,
  • 然后检查队列余下任务中有没有比A优先级更高的任务,如果有比A优先级高的任务,则将任务A放到队列尾部,否则就执行任务A的打印。
  • 请编写一个程序,根据输入的打印队列,输出实际的打印顺序。

输入描述

  • 输入一行,为每个任务的优先级,优先级之间用逗号隔开,优先级取值范围是1~9。

输出描述

  • 输出一行,为每个任务的打印顺序,打印顺序从0开始,用逗号隔开

示例 1 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

9,3,5

输出

0,2,1

说明

  • 队列头部任务的优先级为9,最先打印,故序号为0;
  • 接着队列头部任务优先级为3,队列中还有优先级为5的任务,优先级3任务被移到队列尾部;
  • 接着打印优先级为5的任务,故其序号为1;
  • 最后优先级为3的任务的序号为2。
nums = [int(i) for i in input().split(',')]
n = nums.copy()


class Sort:

    def can_sort(self, nums):
        res = []

        def sort_list(k):
            for i in range(len(nums)):
                try:
                    if nums[i] == max(nums):
                        res.append([nums[i], k])
                        k += 1
                        nums.pop(i)
                        sort_list(k)
                except:
                    break
            return res

        return sort_list(0)


so_ls = Sort().can_sort(nums).copy()

ls = []
for i in n:
    for j in so_ls:
        if i == j[0]:
            ls.append(j[1])
            so_ls.remove(j)
print(','.join(map(str, ls)))

华为OD机试 - 打印任务排序(Java) 我的策略是,将输入的优先级,存入一个数组priority中,然后升序,假设一共n个任务,那么指针maxIdx = n - 1指向的就是最大优先级。然后检查队列余下任务中有没有比A优先级更高的任务,如果有比A优先级高的任务,则将任务A放到队列尾部,否则就执行任务A的打印。接下来开始打印头部任务[2, 1],发现该任务的优先级是最高的,因此将他取出后打印,继续取出头部任务[2, 2],发现发现该任务的优先级是最高的,因此将他取出后打印,最后一个任务直接打印,即排队序号为0的任务,打印序号是2, 阅读详情

相关推荐

【华为OD机试真题 Python语言】216、打印任务排序 | 机试真题+思路参考+代码分析

某个打印机根据打印队列执行打印任务;打印任务分为九个优先级,分别用数字1-9表示,数字越大优先级越高,打印机每次从队列头部取出第一个任务A,然后检查队列余下任务中有没有比A优先级更高的任务,如果有比A优先级高的任务,则将任务A放到队列尾部,否则就执行任务A的打印。输入一行,为每个任务的优先级,优先级之间用逗号隔开,优先级取值范围是1~9。输出一行,为每个任务的打印顺序,打印顺序从0开始,用逗号隔开。请编写一个程序,根据输入的打印队列,输出实际的打印顺序。

KJ.JK 2225

Printer Queue算法(华为: 打印任务排序, POJ3125)Golang实现

问题描述 Printer Queue(打印队列)POJ3125 打印机顺序打印问题 这是一道ACM算法题,上面的两个是求打印时间,还有一种是求打印顺序 输入和输出: 输入 3 1 0 5 4 2 1 2 3 4 6 0 1 1 9 1 1 1 输出 1 2 5 问题解析 输入解析 第一行的: 3 3个测试用例,每个测试用例包含两行,所以下面有6行,以最后一个用例为例解析 倒数第二行6 0 这是第3个用例的第一行 6: 这个测试用例有6个打印任务, 0: 你的任务在打印队列中的位置(0表示开头,就是排第一个) 倒数第一行的1 1 9 1 1 1 这是第3个用例的第二行, 表示打印队列中的6个任

最新华为OD机试真题——(E卷,200分) - 打印任务排序(python)

某个打印机根据打印队列执行打印任务。打印任务分为九个优先级,分别用数字1-9表示,数字越大优先级越高。打印机每次从队列头部取出第一个任务A,然后检查队列余下任务中有没有比A优先级更高的任务。如果有比A优先级高的任务,则将任务A放到队列尾部;否则就执行任务A的打印。

qq_62634009的博客 1121

华为机试:打印任务排序

华为机试:打印任务排序,优先队列实现

小朱小朱绝不认输的博客 4668

【华为OD机试真题 Python】打印任务排序

某个打印机根据打印队列执行打印任务。打印任务分为九个优先级,分别用数字1-9表示,数字越大优先级越高。打印机每次从队列 头部取出第一个任务A,然后检查队列余下任务中有没有比A优先级更高的任务,如果有比A优先级高的任务,则将任务A放到队列尾 部,否则就执行任务A的打印。请编写一个程序,根据输入的打印队列,输出实际的打印顺序。

qq_40642440的博客 455

【华为OD机试】B卷真题-打印任务排序(Python)

某个打印机根据打印队列执行打印任务。打印任务分为九个优先级,分别用数字1-9表示,数字越大优先级越高。打印机每次从队列头部取出第一个任务A,然后检查队列余下任务中有没有比A优先级更高的任务,如果有比A优先级高的任务,则将任务A放到队列尾部,否则就执行任务A的打印。请编写一个程序,根据输入的打印队列,输出实际的打印顺序。

u014481728的博客 434

华为OD机试真题 2023 B + 2023 C&D 卷(JAVA&JS&Python&C++)

本栏包含了华为OD机试真题2022Q4 A + 2023 B卷的全部机试真题。

qq_34465338的博客 11万+

华为OD机试真题 - 打印任务排序 (D卷,100分)

打印队列中的任务按照优先级进行排序,优先级用数字1到9表示,数字越大优先级越高。打印机每次从队列的头部取出任务,并检查队列中剩余的任务是否有比当前任务优先级更高的任务。列表中的每个元素代表一个打印任务,其值表示任务的优先级。然后检查队列余下任务中有没有比A优先级更高的任务,如果有比A优先级高的任务,则将任务A放到队列尾部,否则就执行任务A的打印。// 如果当前元素的优先级与已排序数组中的最高优先级相匹配。接着队列头部任务优先级为3,队列中还有优先级为5的任务,优先级3任务被移到队列尾部;

OD2024hw的博客 94

2026华为OD机考新系统真题 + 双机位C卷 + 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

2026年4月1日起,华为OD机试正式切换至新系统模式!采用力扣模式,无需自己写输入! 难度大幅度降低。正在备考华为OD机试的同学,优先刷新系统机试真题,可大幅提升通过率。 新系统考题考点与旧版一致,无需重新适应。本专栏所有算法题均配有详细思路解析,并提供C语言、JS、C++、Python、Go、Java多语言源码实现。订阅后私信即可开通专属OJ刷题权限,高效备考一次上岸!

算法大师! 45万+

【华为OD机试】打印任务排序【2023 B卷|200分】

某个打印机根据打印队列执行打印任务。打印任务分为九个优先级,分别用数字1-9表示, 数字越大优先级越高。打印机每次从队列头部取出第一个任务A, 然后检查队列余下任务中有没有比A优先级更高的任务,如果有比A优先级高的任务, 则将任务A放到队列尾部,否则就执行任务A的打印。 请编写一个程序,根据输入的打印队列,输出实际的打印顺序。

goldarmour的博客 1258

【华为OD机试真题 2025C卷】216、打印任务排序 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025C卷】216、打印任务排序 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,如何备战华为

正在更新最新华为OD机试2025B卷,提供OJ在线刷题 2619

华为OD机试 新系统 双机位C卷 真题题库目录|机考题库 + 算法考点详解

本文整理华为OD机试(机考) 新系统真题题库,提供高频考点精析与详细题目内容,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解 和 在线OJ做题练习。华为OD机试新系统真题题库。

qq_45776114的博客 10万+

打印任务排序

真题目录:200分题型。

qq_45776114的博客 209

2026华为OD机试(C语言)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,C语言实现。

MISAYAONE的博客 11万+

2026华为OD机试(Python)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,Python实现。

MISAYAONE的博客 29万+

2026年华为od机试真题题库

OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)

面试高手的博客 19万+
上一篇: 【华为OD机试真题 python】贪吃蛇
下一篇: 【华为OD机试真题 python】连续出牌数量
北方肆歌
博客等级 码龄7年 408粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北方肆歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值