求优化的运动会运动员道次排序的算法(已解决)
本帖最后由 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
成绩
名次 没人能想出比较好的算法或者公式么。 字太多了,能精简成带数学的例子就好了 下面几个表格是我现在产生的,没有优化的,只是想让大家帮忙想下那算法,产生几个优化后的表格。没有这么多字我的意思就没法表达了。 依照分数 那就
本轮赛道的评分 + 上轮赛道的评分 < 5
算一下就可以了应该... 回复 5# rolaka
按照这样分运动员到后面能平均分么。 那如何解决一个场上没有相同班级运动员的情况呢 比如有 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)
下一轮按照这些值来排就是了 同一场之间调剂就可以了
不能平均是可能出现的 手动修改下结果就是了
比较乱 就大概给个意思 太感谢了,让我有思路了。这问题纠结了我2个星期了。 结题了怎么变成已解决状态,编辑里的分类里没有“已解决”{:face (197):} 管理员拖到已解决部分,帖子已结题
页:
[1]