问题 C: 算法实现题4-6 最优服务次序问题
时间限制: 1 Sec 内存限制: 128 MB
题目描述
设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti,1≤i≤n。应如何安排n个顾客的服务次序才能使平均等待时间达到最小?平均等待时间是n个顾客等待服务时间的总和除以n。对于给定的n个顾客需要的服务时间,计算最优服务次序。
输入
第一行是正整数n,表示有n个顾客。接下来的一行中,有n个正整数,表示n个顾客需要的服务时间。
输出
将计算的最小平均等待时间输出
样例输入
10 56 12 1 99 1000 234 33 55 99 812
样例输出
532.00
#include <stdio.h>
#include <stdlib.h>
int main(){
int n,i,j,temp;
scanf("%d",&n);
int* a = (int *)malloc(sizeof(int)* n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
int sum=0;
for(i=0;i<n;i++){
for(j=i+1;j<n;j++){
if(a[i]>a[j]){
temp=a[i];a[i]=a[j];a[j]=temp;
}
}
}
for( i=1;i<n;i++){//每个位置累加前面到自己
a[i]+=a[i-1];
}
for( j=0;j<n;j++)//加起来
sum+=a[j];
printf("%.2f\n",sum*1.0/n);
return 0;
}