问题描述:
设有n 个顾客同时等待一项服务。每个顾客需要服务一定时间。共有s 处可以
提供此项服务。应如何安排n 个顾客的服务次序才能使平均等待时间达到最小?平均等待时
间是n个顾客等待服务时间的总和除以n。
编程任务:
对于给定的n个顾客需要的服务时间和s的值,编程计算最优服务次序,先看下代码:
#include<stdio.h>
#include<algorithm>
using namespace std;
#define n 10 //顾客数
#define s 2 //服务窗口数
int main()
{
//总共需要服务10位顾客,每位顾客需要服务的时间存在数组里
int a[n] = {56,12,1,99,1000,234,33,55,99,812};
int i;
int sum = 0;
int sub[s] = {0}; //服务窗口
sort(a,a + n);
for(i = 0;i < n;i ++){
sub[i % s] += a[i];
sum += sub[i % s];
}
printf("%.2f",sum * 1.0 / n);
return 0;
}
运行打印:336.00
看个图:
0号窗口服务1,33,56....
1号窗口服务12,55,99...
对应0号窗口,当服务1时,后面几位顾客需要等待的时间就是前面几位顾客需要的服务时间的累加,前面有多少顾客就需要累加多少次。1号窗口也是一样。
学习地址:https://blog.csdn.net/sdz20172133/article/details/79223628
https://github.com/jingong/Algorithm/blob/master/4.贪心算法/多处最优服务次序问题.txt