贪心算法最优服务次序



最优服务次序问题

设有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;
}
运行截图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容