问题描述
假设有 n 个任务由 k 个可并行工作的机器来完成。完成任务 i 需要时间为ti ,设计完成这 n 个任务的最佳调度算法,使得完成全部任务的时间最早。
分析
对于每一个任务i,k个机器人都可以选择执行或不执行,对于每一种情况进行递归回溯,在这个过程中更新最优解
剪枝策略:默认完成全部任务的时间为最长时间即best=INF,当执行当前任务需要的时间小于best时进行回溯,否则不进行
递归出口,当回溯到第n个任务时结束,更新最优解
代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
static int INF = 0x3f3f3f3f;
int n; //n个任务
int k; //k个机器人
int best = INF; //最