首页 | 通行证 | 论坛 | BLOG | 书评 | 开发文章 | 人才招聘 | 资讯 | 工具下载 | 源码下载 | 项目交易 | 兴趣小组 | 网友作品 | C语言试题测试 | 资源共享 | ACM题库

注册新会员

请登陆或者注册新用户   用户名    密  码   记住密码  注册新用户  忘记密码了

 您所在位置:论坛首页数据结构与算法 — [讨论]这题怎么做?帮忙下!
 本帖地址: http://bbs.pfan.cn/post-270935.html [复制地址] [搜索相关帖子]
  发 新 帖   回 帖   快速回帖
 主题:[讨论]这题怎么做?帮忙下!
作者:sucaigui
专家分:0
级别:1
 会员信息
 发短消息
 所属BLOG
发表时间:2008-3-25 17:37:00    [回复]  [只看作者帖] [只看得分帖] [只看我的回帖]
楼主
要求用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. 

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

  最后修改于2008-3-25 17:56:00

0
作者:zhangc511
专家分:310
级别:2

发表时间:2008-4-4 21:55:00    [回复]  [引用]
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

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

 

 此帖被评30分
[首页] [上页][下页] [尾页]     共有 1 回帖 当前第 1 页(共1页 20帖/页)     跳转至第
  发 新 帖   回 帖   快速回帖   刷新版面

版主管理:  删除此帖   删除回复帖   转贴   置顶   加入精华   强制结帖   >>>进入管理页面

此帖被锁,禁止回帖


关于本站 - 网站导航 - 广告服务 - 联系站长 - BUG报告 - 友情链接 - 赞助本站
Copyright© 1999-2008 Programfan.com. All Rights Reserved
论坛制作&维护:Hannibal    Email: webmaster@pfan.cn
最佳浏览效果:IE6.0+ 或 FireFox 1.5+ 分辨率:1024*768