在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]
- 如果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