(贪心)最优服务次序问题
2013-08-08 00:15
239 查看
题目:点击打开链接
最简单的贪心,按服务时间降序排列,这样等待服务的总时间最短,每个人的服务时间也是该人的等待时间的一部分,需要加入。。。
下面是AC代码:
#include <stdio.h>
int main()
{
int t,a[1000+10],i,j,k,sum;
scanf("%d",&t);
for(i=0;i<t;i++)
scanf("%d",&a[i]);
for(i=0;i<t-1;i++)
for(j=0;j<t-1-i;j++)
if(a[j]>a[j+1])
{
int temp=a[j];a[j]=a[j+1];a[j+1]=temp;
}
sum=0;
for(i=0;i<t;i++)
{
sum+=a[i]*(t-i);
}
printf("%.2lf\n",sum/(t*1.0));
return 0;
}
最简单的贪心,按服务时间降序排列,这样等待服务的总时间最短,每个人的服务时间也是该人的等待时间的一部分,需要加入。。。
下面是AC代码:
#include <stdio.h>
int main()
{
int t,a[1000+10],i,j,k,sum;
scanf("%d",&t);
for(i=0;i<t;i++)
scanf("%d",&a[i]);
for(i=0;i<t-1;i++)
for(j=0;j<t-1-i;j++)
if(a[j]>a[j+1])
{
int temp=a[j];a[j]=a[j+1];a[j+1]=temp;
}
sum=0;
for(i=0;i<t;i++)
{
sum+=a[i]*(t-i);
}
printf("%.2lf\n",sum/(t*1.0));
return 0;
}