回 帖 发 新 帖 刷新版面

主题:[讨论]这题怎么做?帮忙下!

要求用C语言(数据结构排序的相关问题)
最优服务次序问题
«问题描述:
设有n 个顾客同时等待一项服务。顾客i需要的服务时间为t i n i ,1 £ £ 。应如何安排n
个顾客的服务次序才能使平均等待时间达到最小?平均等待时间是n 个顾客等待服务时间的
总和除以n。
«编程任务:
对于给定的n个顾客需要的服务时间,编程计算最优服务次序。
«数据输入:
由文件input.txt给出输入数据。第一行是正整数n,表示有n 个顾客。接下来的1 行中,
有n个正整数,表示n个顾客需要的服务时间。
«结果输出:
将编程计算出的最小平均等待时间输出到文件output.txt。
输入文件示例 输出文件示例
input.txt                                        output.txt
10
56 12 1 99 1000 234 33 55 99 812
                                                   532.00

解释一下题目意思:每个所需的等待时间计算方法从开始到这个人服务结束的时刻为止。如果第一人的服务时间为t1,那么第一个人所需的等待时间也为t1.假设第二个人所需的服务时间为t2,那么第二个人所需的等待时间为t1+t2. 

请回复者顺便说一下算法思想和程序解释,谢谢

回复列表 (共1个回复)

沙发

假设服务的顺序为n1,n2,n3,......nn
则总的等待时间为t=n*tn1+(n-1)tn2+(n-2)tn3+.....+tnn

假设ti<tj,m>k
则容易得到m*ti+k*tj<k*ti+m*tj

由上面的推理,我们知道要使t最小,必须有tn1<tn2<tn3<.....<tnn

这样问题就可以转化为:对服务时间排序,较小的先服务

我来回复

您尚未登录,请登录后再回复。点此登录或注册