最优服务次序问题
设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti, 1≦i ≦n 。共有s处可以提供此服务。应如何安排n个顾客的服务次序才能使平均等待时间达到最小?平均等待时间是n 个顾客等待服务时间的总和除以n。
分析:
为了平均等待时间最少,当然是用时少的服务先执行,用时长的后执行,排个序就OK了
#include<stdio.h>
#include<stdlib.h> //这个头文件是关键
#define n 10
int comp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;//升序排列
}
int main()
{
int time=0;//总的等待时间
int i,j;
int t[n]={56,12,1,99,1000,234,33,55,99,812};
qsort(t,n,sizeof(int),comp);
for(i=0;i<n;i++)
{
j=t[i]*(n-i);
time+=j;
}
printf("%f",time*1.0/n);
return 0;
}
运行截图
网友评论