当前位置:   article > 正文

华为OD机试Python记录_华为od 有5台打印机打印文件,每台打印机有自己的待打印队列。因为打印的文件内容

华为od 有5台打印机打印文件,每台打印机有自己的待打印队列。因为打印的文件内容

回忆版

1.打印文件(100分)

题目描述:

有5台打印机打印文件,每台打印机有自己的待打印队列。打印的文件内容有优先级,有1-10不同的优先级,其中数字越大,优先级越高。打印机会从自己的队列中选择优先级最高的文件来打印。如果队列中存在相同优先级的文件,那么选择最先进入队列的文件进行打印。

输入描述:

每个输入一个测试用例,一个测试用例第1行给出事件个数N(0<N<1000)。接下来N行,分别表示发生的事件。共有两种事件:1.“IN P NUM”,表示一个拥有优先级NUM的文件放到打印机P的待打队列。0<p<5,0<num<=10。2.“OUT P”,表示打印机P进行一次文件打印,同时该文件出列。

输出描述:

每次“OUT P”事件,输出文件的编号,如果队列为空,输出“NULL”。文件编号定义:“IN P NUM”事件发生第X次,此处待打文件编号为X,编号从1开始。

示例:

输入:
7
IN 1 1
IN 1 2
IN 1 3
IN 2 1
OUT 1
OUT 2
OUT 2

输出:
3
4
NULL

参考代码:通过率100%
n=int(input())

x,lst=0,[[] for i in range(5)]#lst表示5台打印机
for t in range(n):
    rd=list(input().split())
    if rd[0] == "IN":
        x+=1
        lst[int(rd[1])-1].append((x,int(rd[2])))
    else:
        idx,pl=0,int(rd[1])-1 #idx表示文件编号,pl表示打印机编号
        if len(lst[pl])>0:
            for i in range(1,len(lst[pl])):
                #遍历找出最高优先级文件
                if lst[pl][i][1]>lst[pl][idx][1]:
                    idx=i
            print(lst[pl][idx][0])
            lst[pl].pop(idx)
        else:
            print("NULL")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

2.寻找链表中间节点(100分)

题目描述:

给定一个链表L,编写程序输出链表中间节点保存的数据,如果有两个节点,那么输出后一个节点的数据。例如,L为1→7→5,输出7;L为1→2→3→4,输出3。

输入描述:

第一行给出首节点地址以及链表节点个数。节点地址是5位非负整数,NULL地址用-1表示,接下来N行,每行格式:地址、数据、 next。

输出描述:

输出目标节点保存的数据

示例

输入:
00100 4
00000 4 -1
00100 1 12309
33218 3 00000
12309 2 33218

输出:
3

参考代码:通过率93.333%
mp={}#表示链表
st,n=input().split()
n=int(n)
for _ in range(n):
    id,data,nxt=input().split()
    mp[id]=(int(data),nxt)

n = n//2

for i in range(2):#在链表中移动
    st=mp[st][1]
print(mp[st][0])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

3.最优资源分配(200分)

题目描述:

某种芯片的最小容量单位为1.25G,总容量为M×1.25G,对该芯片的资源编号为1,2,。。。,M。芯片支持3种不同的配置,分别为A,B,C。

A:占用容量1.25g×1
B:占用1.25×2
C:占用1.25×8

一个硬件板上集成N个芯片,芯片编号为1,2,3,。。。。,N。各芯片相互独立,不能跨芯片占用资源。给定板卡芯片数量N,每块芯片的容量为M,按照用户配置后输出芯片资源占用情况,保证消耗的芯片数量最少。

资源分配规则:按照芯片编号从小到大进行资源分配,芯片资源被占用则标记为1,未占用标记为0.
用户配置序列:用户配置按照顺序来进行配置,如果某个配置超过了芯片的容量,则丢弃该配置,继续遍历后续的配置。

输入描述

M:每块芯片容量M×1.25G
N:芯片数量,1-32
用户配置:例如ACABA,长度不超过1000

输出描述

每块芯片的占用情况

示例

输入
8
2
ACABA

输出
11111000
11111111

说明
第一个配置A:占用第一块芯片的第一个资源,占用情况为
10000000
00000000
第二个配置C:第一块芯片的剩余容量(8.75)不够配置C,所以用第二个芯片来配置C,占用情况为
10000000
11111111

……(省略)

第五个配置A:第一块芯片所剩的容量仍然够配置A,占用该芯片的第五个资源,占用情况
11111000
11111111

参考代码:通过率100%
m = int(input())
n = int(input())
str = list(input())
ch = [0 for i in range(n)]#表示每个芯片使用的容量

for c in str:
    val = 1
    if c == "A":
        val = 1
    elif c == "B":
        val = 2
    else:
        val = 8
        #计算配置对应的容量
    for i in range(n):
        #按照顺序寻找剩余容量足够的芯片
        if m - ch[i] >= val:
            ch[i] += val
            break

for i in range(n):
	#根据每个芯片已使用的容量输出
    for j in range(m):
        if j < ch[i]:
            print("1",end="")
        else:
            print("0",end="")
    print("")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/69641
推荐阅读
相关标签
  

闽ICP备14008679号