找回密码
 加入
搜索
查看: 4479|回复: 10

[效率算法] 求优化的运动会运动员道次排序的算法(已解决)

  [复制链接]
发表于 2010-9-18 09:58:07 | 显示全部楼层 |阅读模式
本帖最后由 jiangllllp 于 2010-9-23 19:22 编辑

最近在编写学校运动会数据处理的软件,碰到这样一个问题:
100米男子的数据大致排列如下,但还有规则与说明:
说明:每个表格代表一次比赛的名单信息,因为学校只有一个跑道,要按场次一场一场来跑
规则:(1) 同一场次即同一场不能出现同一个班级的数据,比如下面第一个表格中出现2个初二(9)班的数据了,这样不行。
(2)道次有好坏的,最好的道次为第三道,第四道,中等的道次为第二道,第五道,最差的道次为第一道,第六道,最好保证每个班级都不要在最好的2道上,也不要在最差的2道上,保证学生比赛的公平性。如果我们给个道次好坏的分数,那么分数分别如下:
第一道        第二道        第三道        第四道        第五道        第六道
1                 2                3            3               2              1
说明:下面是100米男子的数据
请各位高手指点,这是个生活中非常实际的问题。
有说的不清楚的问哈。

运动会成绩登记表                                               
      年级:初二                      项目:100米                      组别:男子        表(1)
        第一道        第二道        第三道        第四道        第五道        第六道
班级        初二(8)班        初二(4)班        初二(1)班        初二(5)班        初二(9)班        初二(9)班
姓名        张文彬        冯偲程        唐文浩        唐阳洋        云海        程智渊
号码        8805        8407        8103        8503        8902        8907
成绩                                               
名次                                               
                                               
                                               
运动会成绩登记表                                               
      年级:初二                      项目:100米                      组别:男子        表(2)
        第一道        第二道        第三道        第四道        第五道        第六道
班级        初二(10)班        初二(1)班        初二(2)班        初二(3)班        初二(6)班        初二(8)班
姓名        唐楚城        唐家伟        张哲伟        叶方钰        沈雨豪        周鸿运
号码        81008        8102        8206        8307        8606        8809
成绩                                               
名次                                               
                                               
                                               
运动会成绩登记表                                               
      年级:初二                      项目:100米                      组别:男子        表(3)
        第一道        第二道        第三道        第四道        第五道        第六道
班级        初二(3)班        初二(7)班        初二(5)班        初二(7)班        初二(10)班        初二(6)班
姓名        马元晖        陈磊        周剑峰        孙真        陈卫杨        李鑫
号码        8306        8702        8507        8703        81003        8607
成绩                                               
名次

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

 楼主| 发表于 2010-9-18 10:09:04 | 显示全部楼层
没人能想出比较好的算法或者公式么。
发表于 2010-9-18 10:24:53 | 显示全部楼层
字太多了,能精简成带数学的例子就好了
 楼主| 发表于 2010-9-18 11:04:16 | 显示全部楼层
下面几个表格是我现在产生的,没有优化的,只是想让大家帮忙想下那算法,产生几个优化后的表格。没有这么多字我的意思就没法表达了。
发表于 2010-9-18 12:28:44 | 显示全部楼层
依照分数 那就
本轮赛道的评分 + 上轮赛道的评分 < 5
算一下就可以了应该...
 楼主| 发表于 2010-9-18 13:33:59 | 显示全部楼层
回复 5# rolaka


    按照这样分运动员到后面能平均分么。
 楼主| 发表于 2010-9-18 13:34:33 | 显示全部楼层
那如何解决一个场上没有相同班级运动员的情况呢
发表于 2010-9-18 15:28:45 | 显示全部楼层
比如有 a1 a2 b c1 c2 c3 d 7个人(同字母就是同班)

一共有三根跑道 评分为 1 2 1

那 总轮数就是
Ceiling(7/3)
把7个人放进数组之后打乱 然后依次输出
第一场 a1 b c1

第二场 a2 c2 d

轮空 c3
并且记录他们每个人的跑道 依照班级算出一个平均值
a班 = (1+1)/2
b班 = (2)/3
c班 = (1+2+0)/(3-1)
下一轮按照这些值来排就是了 同一场之间调剂就可以了

不能平均是可能出现的 手动修改下结果就是了

比较乱 就大概给个意思

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2010-9-18 18:33:03 | 显示全部楼层
太感谢了,让我有思路了。这问题纠结了我2个星期了。
 楼主| 发表于 2010-9-18 18:43:12 | 显示全部楼层
结题了怎么变成已解决状态,编辑里的分类里没有  “已解决”{:face (197):}
 楼主| 发表于 2010-9-23 19:23:25 | 显示全部楼层
管理员拖到已解决部分,帖子已结题
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-21 03:13 , Processed in 0.094738 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表