在Python中编写检查所有任务是否可以在给定服务器核心上执行的程序

在Python中编写检查所有任务是否可以在给定服务器核心上执行的程序

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

因此,如果输入如下 cores = [10, 7] tasks = [7, 3, 2, 2, 1],那么输出将为True,因为我们可以将任务[0]和任务[1]放到核心为10的第一个服务器上,将其余任务放到核心为7的第二个服务器上。

要解决此问题,我们将遵循以下步骤−

  • 定义一个solve()函数。这将采取cores和tasks作为参数
  • 如果tasks集为空,则
    • 返回True
  • 对于i从0到cores大小-1,执行以下操作
    • 如果cores[i] >=tasks[0],则
      • cores[i]:=cores[i]-tasks[0]
    • 如果solve(cores,除第一个任务外的任务列表)为true,则
      • 返回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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程