凤凰新媒体 版权所有 不得转载 lawyer@ifeng.com
京ICP证030609号 本站通用网址:凤凰网
客服电话:(010)84458487 客服邮箱blog@ifeng.com
又是贪心算法,嘿嘿,用贪心算法,其实我并不贪心。
基本策略:总取作业完成时间最多的分配给已得作业量最少的计算机。
typedef struct job
{
int j;//作业编号
int t;//作业所需时间
int j;将分配给那第j台计算机
}
typedef struct computer
{
int i ;//计算机编号
int T;//工作时间
}
n //作业数量
m //计算机数量
t[i] //第i个作业所花时间
void attemperjob(job T[],int n, computer J[], int m,int t[])
{
for( i = 0 ; i < n; i++)//初始化工作
{
T[i].i = i ;
T[i].t = t[i];
}
for( i = 0; i < m; i++)//初始化计算机
{
J[i].i = j;
J[i].T = 0;
}
sort(T[],n)//把工作按时间大小排序
for(i = 0; i < n ; i++)//这里是重点为N个作业分配计算机
{
T[i].j = J[1].i;//将工作量最小的分配给时间消耗最大的作业
J[1].T += T[i].t//将刚分配的计算机所用时间加刚分配作业的时间
Sort(J[],m)//最小堆排序
}
}
}}
请登录以后再发表评论。