115. 华为OD-AI处理器组合(100分)

难度 6
  • 标签:
  • 华为OD真题100分题型
题目描述
题解
题库

华为OD-AI处理器组合(100分)

题目内容

某公司研发了一款高性能 AI 处理器。每台物理设备具备 8 颗 AI 处理器,编号分别为 0、1、2、3、4、5、6、7。

编号 030−3 的处理器处于同一个链路中,编号 474−7 的处理器处于另外一个链路中,不通链路中的处理器不能通信。如下图所示:

image

现给定服务器可用的处理器编号数组 arrayarray ,以及任务申请的处理器数量 numnum ,找出符合下列亲和性调度原则的芯片组合。

如果不存在符合要求的组合,则返回空列表。

亲和性调度原则:

如果申请处理器个数为 11 ,则选择同一链路,剩余可用的处理器数量为 11 个的最佳,其次是剩余 33 个的为次佳,然后是剩余 22 个,最后是剩余 44 个。

如果申请处理器个数为 22 ,则选择同一链路剩余可用的处理器数量 22 个的为最佳,其次是剩余 44 个,最后是剩余 33 个。

如果申请处理器个数为 44 ,则必须选择同一链路剩余可用的处理器数量为 44 个。

如果申请处理器个数为 88 ,则申请节点所有 88 个处理器。

提示:

任务申请的处理器数量只能是 11224488

编号 030−3 的处理器处于一个链路,编号 474−7 的处理器处于另外一个链路。

处理器编号唯一,且不存在相同编号处理器

输入描述

输入包含可用的处理器编号数组 arrayarray ,以及任务申请的处理器数量 numnum 两个部分。

第一行为 arrayarray ,第二行为 numnum

例如:

[0, 1, 4, 5, 6, 7]
1

表示当前编号为 001144556677 的处理器可用。任务申请 11 个处理器。

0array.length80\le array.length\le 8

0array[i]70\le array[i]\le 7

num[1,2,4,8]num\in [1,2,4,8]

输出描述

输出为组合列表,当 array=[0,1,4,5,6,7]array=[0,1,4,5,6,7]num=1num=1 时,输出为 [[0],[1]][[0], [1]]

样例1

输入

[0, 1, 4, 5, 6, 7]
1

输出

[[0], [1]]

说明

根据第一条亲和性调度原则,在剩余两个处理器的链路(0,1,2,30,1,2,3)中选择处理器。

由于只有 0011 可用,则返回任意一颗处理器即可。

样例2

输入

[0, 1, 4, 5, 6, 7]
4

输出

[[4, 5, 6, 7]]

说明

根据第三条亲和性调度原则,必须选择同一链路剩余可用的处理器数量为 44 个的环