您的位置:首页 > 其它

算法导论 思考题 16-2b 最小平均完成时间调度问题

2017-06-14 16:51 1666 查看
这里省略对p
排序

#include <stdio.h>
#include <stdlib.h>
#include <limits.h>

#define N 3

int getMin(int *p,int* r,int t)
{
int j=-1;
for(int i=0;i<N;i++)
{
if(r[i]<=t && p[i]>0)
{
j=i;
break;
}
}
return j;
}

bool isShortest(int *p,int j)
{
bool b=true;
for(int i=0;i<j;i++)
{
if(p[i]>0)
b=false;
}
return b;
}

int greedy(int *p,int* r)
{
int sum=0,t=0,j=getMin(p,r,t);
while(j!=-1)
{
if(isShortest(p,j))
{
t+=p[j];
sum+=t;
p[j]=0;

}
else
{
t++;
p[j]--;
sum+=t;
}
j=getMin(p,r,t);
}
return sum;
}

void main()
{
int p
={2,4,9};
int r
={1,3,0};
int t=greedy(p,r);
printf("%d\n",t);
getchar();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐