问题描述:假设有n个任务由k个可并行工作的机器完成,完成任务i需要的时间为ti。设计一个算法找出完成这n个任务的最佳调度,使得完成全部任务的时间最早。
算法设计:对任意给定的整数n和k,以及完成任务i需要的时间为ti(i=1~n)。设计一个优先队列式分支界限界法,计算完成这n个任务的最佳调度。
数据输入:第一行有2 个正整数n和k。第2 行的n个正整数是完成n个任务需要的时间。
输入样例:
7 3
2 14 4 16 6 5 3
结果输出:输出计算的完成全部任务的最早时间。
输出样例:
17
分支限界法:
#include<bits/stdc++.h>
using namespace std;
int n, k;
int x[1000]; //存储完成第i个任务需要的时间
int best = 9999; //最早的完成时间
struct node
{
int t[1000]; //当