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]
- 如果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
广告