Python程序检查所有任务是否可以使用给定的服务器核心执行


假设我们有两个列表,它们是cores和tasks。cores[i]表示第i个服务器可用的核心数量。tasks[i]表示执行该任务所需的核心的数量。每个任务必须只在一个服务器上运行。一个服务器可以运行多个任务。我们必须检查是否可以使用给定的核心运行所有任务。

因此,如果输入类似于cores = [10, 7] tasks = [7, 3, 2, 2, 1],则输出将为True,因为我们可以将tasks[0]和tasks[1]放入具有10个核心的第一个服务器,并将其余任务放入具有7个核心的第二个服务器。

为了解决这个问题,我们将遵循以下步骤:

  • 定义一个函数solve()。这将接收cores和tasks作为参数。
  • 如果tasks集合为空,则
    • 返回True
  • 对于范围从0到cores大小减1的i,执行以下操作:
    • 如果cores[i] >= tasks[0],则
      • cores[i] := cores[i] - tasks[0]
    • 如果solve(cores,除了第一个任务之外的任务列表)为真,则
      • 返回True
    • cores[i] := cores[i] + tasks[0]
  • 返回False

示例

让我们看看以下实现以更好地理解:

def solve(cores, tasks):
   if not tasks:
      return True

   for i in range(len(cores)):
      if cores[i] >= tasks[0]:
         cores[i] -= tasks[0]
         if solve(cores, tasks[1:]):
            return True
         cores[i] += tasks[0]
   return False

cores = [10, 7]
tasks = [7, 3, 2, 2, 1]
print(solve(cores, tasks))

输入

[10, 7], [7, 3, 2, 2, 1]

输出

True

更新于: 2021年10月16日

112 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告