最优服务次序
问题描述:
设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti。应如何安排n个顾客的服务次序才能使平均等待时间达到最小?平均等待时间是n个顾客等待直到完成服务的时间总和除以n。
算法:
每个顾客等待的平均时间最小—>总时间最小—>每位顾客时间加和—>T(n)=t+t(i),服务所用时间加等待时间—>总和S=S+T(n);
服务时间固定,可减少等待时间,即服务所用时间少的优先—>数组排序问题。
输入:
10(顾客人数)
56 12 1 99 1000 234 33 55 99 812(每位顾客服务时间)
输出:
532
#include<stdio.h>
int main()
{
int n,i,j,sum=0,p=0;
int a[n];
scanf("%d",&n);
for(i=0;i<n;i++)
{//给数组赋值 数组存储用户服务所用时间
scanf("%d",&a[i]);
}
//数组元素排序
for(i=0;i<n;i++)
{
int temp;
for( j=i+1;j<n;j++){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(i=0;i<n;i++)
{
sum=sum+a[i];
p=p+sum;
//printf("%d\n",a[i]);
}
printf("%d",p/n);
return 0;
}