贪心算法最优服务次序

2016-12-31  本文已影响0人  Super_邓帅


最优服务次序问题

设有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;
}
运行截图
上一篇 下一篇

猜你喜欢

热点阅读