计算比赛算积分的问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 16:53:28
有N个队参加比赛,根据比赛名次加分,名次可能有并列的。N个队按名次分1~A,A+1~B,B+1~C,C+1~N四组,名次在第一组的加5分,第二组加3分,第3组加1分,第四组加0分。但现在有并列名次,加分应该均分。例如,18个队,按5,5,4,4分成四组。但现在并列第一名有7个(二到七名就没有了),并列第8名有8个(9到15名就没有了),再是并列第16名3个。
那么并列第一名的7个队每队加分为(5+5+5+5+5+3+3)/7;
并列第8名的7个队每队加分为(3+3+3+1+1+1+1+0)/8
并列16名的三个队每队加分就只有(0+0+0)/3
请问这种算法怎么写一个通用的算法。
您没理解我的意思。请看每队得分的计算例子。

"要是2个第一 2个第二 2个第三 。。。 2个第九 怎么办?
是4个第一组还是6个第一组? "
那就不是你所说的了,而是2个第一,2个第三,2个第五…了

这个不需要算法呀..或是自己编写一个函数也行..

思路就是.全局变量有N个队
然后读取这个N个队的比分到数组x中, N个队的名称到数组y,然后让数组x按逆序排序, 也就是比分最高的排在前面.在排序过程中同步对y进行排序.让x和y是一一对应的.

然后根据你的分组信息..比如你的5544.就
for i=1 to ubound(数组y)-1
if i<=5 then print "a组有" & 数组y(i),
if i>5 and i<=10 then print "b组有" & 数组y(i),
if i>10 and i<=14 then print "c组有" & 数组y(i),
if i>14 and i<=18 then print "d组有" & 数组y(i),
next

要是2个第一 2个第二 2个第三 。。。 2个第九 怎么办?
是4个第一组还是6个第一组?
要是4个第一组 那第一组的得分 (5+5+5+5)/4=5
要是六个第一组 那得分是(5+5+5+5+5+3)/6=4.67