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

pythonserver side programmingprogramming更新于 2026/1/11 12:28:17

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

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

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

  • 定义一个函数solve()。这将需要 cores、tasks
  • 如果任务集为空,则
    • 返回 True
  • 对于范围为 0 到 cores 大小 - 1 的 i,执行
    • 如果 cores[i] >= task[0],则
      • cores[i] := cores[i] - task[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

相关文章


有用资源