您的位置:首页 > 其它

最佳调度问题

2015-11-30 19:38 309 查看
#include <iostream>
#include <fstream>
using namespace std;

const int MAX = 50;
int time[MAX];  //完成任务需要时间
int n, k;
int best = 1000000;
int p[MAX];  //机器

void compute()
{
int max = p[1];
for(int i=2; i<=k; i++)
{
if(p[i] > max)
max = p[i];
}
if(max < best)
best = max;
}

void backtrack(int dep)
{
if(dep > n)
{
compute();
return;
}

for(int i=1; i<=k; i++)
{
p[i] += time[dep];
backtrack(dep+1);
p[i] -= time[dep];
}
}

int main()
{
ifstream fin("最佳调度.txt");
cout << "输入任务数:";
fin >> n;   cout << n << endl;
cout << "输入机器数:";
fin >> k;   cout << k << endl;
cout << "输入完成任务需要的时间:\n";
for(int i=1; i<=n; i++)
{
fin >> time[i];
cout << time[i] << " ";
}
memset(p, 0, sizeof(p));

backtrack(1);
cout << "\n完成全部任务最早时间为:" << best << endl;
cout << endl;
cout << endl;
fin.close();
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: