单循环赛赛程安排算法的研究

单循环赛赛程安排算法的研究

摘要:循环赛赛程安排算法是一个很经典的计算机算法,它是分治法的一个经典应用,但该算法只适应于2n支队伍的赛程安排问题,而对于非 2n支队伍的赛程安排问题却没有很好的解决。文章使用可视化语言Visual Basic作为开发工具,借助于循环队列的规律,针对任意n支队伍的赛程安排提出一种直观、方便的算法。

关键词:单循环赛;赛程安排;算法;Visual Basic 6.0

中图分类号:TP312文献标识码:A文章编号:1009-3044(2007)15-30805-02

Single Cycle Match Competition Schedule Arrangement Algorithm Research

ZHANG Lin-zhong

(Anhui Agricultural University,College of Applied Mathematics Institute,Hefei 230036)

Abstract:Round robin schedule algorithm is a classic computer algorithm,it is a representative application of the divide and rule algorithm, but the classical computer algorithm can solve match arrangement of 2n teams only, it can not satisfactorily resolve the problem of not 2n teams. The article using Visual Basic as a development tool, using cohort cycle of the law against arbitrary n teams in the schedule proposed an intuitive and user-friendly algorithm.

Key words:Single round robin;the schedule;Algorithm;Visual Basic 6.0

1 引言

在计算机算法中,循环赛赛程安排算法是是分治法的一个经典应用,但该算法只适应于2n支队伍的赛程安排问题,而对于任意n支队伍的赛程安排问题却不能很好的解决。文献4中对该算法作了一个补充,可以对任意支队伍进行比赛的赛程进行安排,但该算法不是很直观,而且通过Turbo C实现,操作起来不是很方便。本文采用面向对象的开发工具Visual Basic,提出一种更为简单的算法,得到更为直观、操作方便的结果。

2 单循环赛赛程算法

单循环赛,是所有参加比赛的队伍均能相遇一次,最后按各队在全部比赛中的积分、得失分率排列名次。这种竞赛方法满足(假设有n支队伍):a、每支队伍必须与其他n-1支队伍各赛一次;b、每支队伍每轮只能进行一场比赛。很明显,当 n为奇数时,需进行n轮比赛;当 n为偶数时,需进行n-1轮比赛。首先考虑n为奇数的情况,在此基础上再考虑n为偶数时的情况。

(1)当比参赛队(或人)为奇数即n=2*k-1 (n≥2)时,考虑到每轮均有一支队伍轮空,先将队伍一分为二,每轮比赛在前后两部分中依次选取一支队伍进行比赛,第一轮将k号选手轮空,利用对称性,将1号队伍和n号队伍比赛,2号队伍和n-1号队伍比赛,依此类推排完第一轮选手的比赛;第二轮将k+1号队伍轮空,再将2号队伍和1号队伍比赛,3号队伍和n号队伍比赛,依此类推排完第二轮选手的比赛;为了避免两个队之间出现重复比赛,所以用循环队列(如图1)的方式解决每轮轮空队伍的编号,即编号为n的队伍轮空的下一轮为编号1的队伍轮空。例:7支队伍参加比赛的排法(见图2):

图1 循环队列

第一轮 1-7 2-6 3-5

第二轮 2-1 3-7 4-6

第三轮 3-2 4-1 5-7

第四轮 4-3 5-2 6-1

第五轮 5-4 6-3 7-2

第六轮 6-5 7-4 1-3

第七轮 7-6 1-5 2-4

图2 7支队伍

(2)当比赛队伍数为偶数即n = 2*k(n≥2)时,每一轮比赛只需在n=2*k(n≥2)的基础上补上轮空的队伍和编号为n的队伍比赛即可。例:8支队伍参加比赛的排法(见图3):

第一轮 1-7 2-6 3-5 4-8

第二轮 2-1 3-7 4-6 5-8

第三轮 3-2 4-1 5-7 6-8

第四轮 4-

c语言算法单循环球队比赛安排,单循环赛赛程安排算法的研究.doc相关推荐

  1. 比赛赛程安排算法--分治算法

    问题在注释中已说明,直接贴代码! /** bisaisaicheng.c** Created on: Nov 30, 2013* Author: bing** 每个选手必须与其他所有选手进行一次比赛, ...

  2. 分治算法实例:赛程安排(VB.net代码)

    Public Class Form1Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadlblTel ...

  3. 算法2-足球比赛出线问题

    足球比赛,一个小组有8支球队进行单循环赛,胜者积3分,平则算法同积1分,负则不积分,规定积分最高的4支球队出线,则出线至少需要多少分?未出线最多可能有多少分? 思路: 循环赛的概念是每一支球队会与其他 ...

  4. c语言分治法求众数重数_五大常见算法策略之——递归与分治策略

    递归与分治策略 递归与分治策略是五大常见算法策略之一,分治策略的思想就是 分而治之 ,即先将一个规模较大的大问题分解成若干个规模较小的小问题,再对这些小问题进行解决,得到的解,在将其组合起来得到最终的 ...

  5. ML之PDP:基于FIFA 2018 Statistics(2018年俄罗斯世界杯足球赛)球队比赛之星分类预测数据集利用DT决策树RF随机森林+PDP部分依赖图可视化实现模型可解释性之详细攻略

    ML之PDP:基于FIFA 2018 Statistics(2018年俄罗斯世界杯足球赛)球队比赛之星分类预测数据集利用DT决策树&RF随机森林+PDP部分依赖图可视化实现模型可解释性之详细攻 ...

  6. python比c语言开发速度快多少倍_Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢?...

    原标题:Python语言其实很慢,为什么机器学习这种快速算法步骤通常还是用呢? 作为python的忠实粉丝,看见这个题目就情不自禁想怼回去.鉴于和谐社会,我决定慢慢讲道理. 首先,相对于c语言,pyt ...

  7. python终结一个循环额_Python语言入门之内存管理方式和垃圾回收算法解析

    本文主要向大家介绍了Python语言入门之内存管理方式和垃圾回收算法解析,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 在列表,元组,实例,类,字典和函数中存在循环引用问题.有 ...

  8. 数据结构源码笔记(C语言):哈希表的相关运算算法

    //实现哈希表的相关运算算法 #include<stdio.h> #include<malloc.h> #include<string.h>#define MaxS ...

  9. 数据结构源码笔记(C语言):二叉平衡树的相关操作算法

    //二叉平衡树的相关运算 #include<stdio.h> #include<malloc.h> #include<string.h>typedef char I ...

  10. Interview:算法岗位面试—11.17下午上海某网**软件公司(上市)技术面之比赛考察、目标检测算法、视频分析算法考点

    Interview:算法岗位面试-11.17下午上海某网**软件公司(上市)技术面之比赛考察.目标检测算法.视频分析算法考点 导读:邀约的下午14.30,到的时候前边有两个学生在等待,当轮到我的时候, ...

最新文章

  1. smartforms设置纸张打印格式
  2. php获取浏览器cookies,简单实现创建以及读取浏览器中cookie的几种方法
  3. Bash+R: howto pass parameters from bash script to R(转)
  4. 【Python】单元测试框架unitest及其高级应用
  5. 基于Socket的java网络编程
  6. linux shell 试题,linux-shell 练习题
  7. oracle 临时文件 大文件,Oracle中临时文件File#和Db_files关系
  8. LeetCode 647. 回文子串 (动态规划)
  9. 不要再危言耸听!家用电脑辐射全揭秘
  10. java jpms_JDK9的新特性:JPMS模块化
  11. [javaSE] 集合工具类(Collections-sort)
  12. 使用 PDO 方式将 Session 保存到 MySQL 数据中
  13. KOD: Linux 命令行安装
  14. 台式计算机如何连接手机热点上网,台式机如何使用手机热点上网
  15. Visual Studio 2019重新安装问题
  16. 卡布奇诺搭建教程_移动Web应用程序框架匹配,第2部分,探索卡布奇诺咖啡以进行移动Web应用程序开发
  17. 【深度学习】半监督学习入门:Mean teachers
  18. python ip反查询_python ip反查域名
  19. p1000_超级玛丽游戏
  20. 杰理AD14N/AD15N---GPIO唤醒引脚触摸时会有效的问题

热门文章

  1. 快手did did_gt edid的注册过程
  2. 【历史上的今天】8 月 14 日:新浪微博开始内测;阿塔纳索夫完成论文;登上太空的计算机病毒
  3. VB6程序实现XP或者WIN7风格
  4. 拓扑图是用什么软件画的?
  5. 淘宝API常用接口列表与申请方式
  6. 3. DICOM图像层级分类-DCMTK-数据字典避坑
  7. cad添加自己线性_如何自定义自己需要的CAD线型?
  8. CentOS hping3安装
  9. 《寄生虫》横扫奥斯卡,Python告诉你这部电影到底好在哪里?
  10. [ 物联网篇 ] ESP32 AWS IoT and Amazon Alexa Development / FreeRTOS平台的Alexa语音助手