AlgoMooc
← 返回题库

P2478. AI处理器组合

中等通过率 32% · 提交 149 · 通过 47
模拟枚举排序

小慕正在设计一款高性能AI加速卡。每块加速卡上有8颗AI核心,编号分别为0、1、2、3、4、5、6、7。 编号0-3的核心位于同一个计算链路中,编号4-7的核心位于另一个计算链路中,不同链路的核心之间无法通信。 现在给定小慕当前可用的核心编号数组array,以及任务申请的核心数量num,需要找出符合以下亲和性调度规则的核心组合。 如果不存在符合要求的组合,则返回空列表。 亲和性调度规则: - 如果申请核心个数为1,则优先选择中剩余可用核心数量为1个的链路,其次是剩余3个的链路,再是剩余2个的链路,最后是剩余4个的链路。 - 如果申请核心个数为2,则优先选择同一链路中剩余可用核心数量为2个的链路,其次是剩余4个的链路,最后是剩余3个的链路。 - 如果申请核心个数为4,则必须选择同一链路中剩余可用核心数量为4个的链路。 - 如果申请核心个数为8,则必须使用所有8个核心。

提示:带虚线的词点一下有通俗解释。

输入描述

输入包含可用的处理器编号数组array,以及任务申请的处理器数量num两个部分。 第一行为array,第二行为num。例如: [0, 1, 4, 5, 6, 7] 1 表示当前编号为0、1、4、5、6、7的处理器可用。任务申请1个处理器。 - 0 <= array.length <= 8 - 0 <= array[i] <= 7 - num in [1, 2, 4, 8]

输出描述

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

示例

示例 1

输入

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

输出

[[0], [1]]

说明:根据第一条亲和性调度原则,在剩余两个处理器的链路(0, 1, 2, 3)中选择处理器。由于只有0和1可用,则返回任意一颗处理器即可。

示例 2

输入

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

输出

[[4, 5, 6, 7]]

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。