link1 = [i for i in array if 0 <= i <= 3]
link2 = [i for i in array if 4 <= i <= 7]
# 根据num的值和亲和性调度原则确定最佳组合
if num == 1:
# 选择剩余处理器最多的链路中的一颗处理器
if len(link1) >= 2:
return [[link1[0]]]
elif len(link2) >= 2:
return [[link2[0]]]
else:
return []
elif num == 2:
# 选择剩余处理器最多的链路中的两颗处理器
if len(link1) >= 2:
return [[link1[0], link1[1]]]
elif len(link2) >= 2:
return [[link2[0], link2[1]]]
else:
return []
elif num == 4:
# 必须选择剩余处理器为4个的链路
if len(link1) == 4:
return [[link1[0], link1[1], link1[2], link1[3]]]
elif len(link2) == 4:
return [[link2[0], link2[1], link2[2], link2[3]]]
else:
return []
elif num == 8:
# 必须选择所有处理器
if len(array) == 8:
return [array]
else:
return []
else:
return []
测试用例
array1 = [0, 1, 4, 5, 6, 7]
num1 = 1
print(find_processor_combinations(array1, num1)) # 输出应为 [[0], [1]]
array2 = [0, 1, 4, 5, 6, 7]
num2 = 4
print(find_processor_combinations(array2, num2