采用“贝格尔”编排法,编排时如果参赛队为双数时,把参赛队数分一半(参赛队为单数时,最后以“0”表示形成双数),前一半由1号开始,自上而下写在左边;后一半的数自下而上写在右边,然后用横线把相对的号数连接起来。这即是第一轮的比赛。
第二轮将第一轮右上角的编号(“0”或最大的一个代号数)移到左角上,三轮又移到右角上,以此类推。
即单数轮次时“0”或最大的一个代号在右上角,双数轮次时则在左上角。如下表示:
7个队比赛的编排方法
第一轮    第二轮   第三轮   第四轮    第五轮   第六轮    第七轮
1-0  0-5  2-0  0-6  3-0  0-7  4-0
2-7  6-4  3-1  7-5  4-2  1-6  5-3
3-6  7-3  4-7  1-4  5-1  2-5  6-2
4-5  1-2  5-6  2-3  6-7  3-4  7-1
无论比赛队是单数还是双数,最后一轮时,必定是“0”或最大的一个代号在右上角,“1”在右下角。
根据参赛队的个数不同,“1”朝逆时针方向移动一个位置时,应按规定的间隔数移动(见表),“0”或最大代号数应先于“1”移动位置。
C#实现:
protected void Page_Load(object sender, EventArgs e)
{List<int[]> list = new List<int[]>();List<int> teams = new List<int> { 1, 2, 3, 4, 5, 6, 7 };int[] array = teams.ToArray();            //参赛队数数量int initlen = array.Length;//比赛轮次int turns = initlen - 1;//如果为奇数,用0补空if (Convert.ToBoolean(initlen % 2)){teams.Add(0);turns = initlen;}list.Add(teams.ToArray());int max = teams[teams.Count - 1];//间隔数,计算公式为(n-4)/2+1int steps = initlen <= 4 ? 1 : (initlen - 4) / 2 + 1;List<int> parseList = teams;int temp = 0;for (int n = 0; n < turns; n++){//移除空位bool isMax = parseList[0] == max ? true : false;parseList.RemoveAt(parseList[0] == max ? 0 : parseList.Count - 1);int[] tempArray = parseList.ToArray();int templen = tempArray.Length;int tempLen = isMax ? steps + 2 : steps;for (int i = 0; i < tempLen; i++){//右位移temp = tempArray[templen - 1];for (int j = templen - 2; j >= 0; j--){tempArray[j + 1] = tempArray[j];}tempArray[0] = temp;}//补空位string tempString = isMax ?string.Format("{0},{1}", string.Join(",", tempArray), max) :string.Format("{0},{1}", max, string.Join(",", tempArray));int[] parseArray = Array.ConvertAll<string, int>(tempString.Split(','), s => int.Parse(s));parseList = new List<int>(parseArray);list.Add(parseArray);                }//分队for (int i = 0; i < list.Count; i++){Response.Write(string.Format("---------第{0}轮--------<br/>", i));int[] ar = list[i];int length = ar.Length / 2;int[] left = new int[length], right = new int[length];List<int> lll = new List<int>();for (int j = 0; j < length; j++){left[j] = ar[j];right[j] = ar[j + length];}Array.Reverse(right);for (int j = 0; j < left.Length; j++){Response.Write(string.Format("{0},{1}<br/>", left[j], right[j]));}}
}

  

结果:

---------第0轮--------
1,0
2,7
3,6
4,5
---------第1轮--------
0,5
6,4
7,3
1,2
---------第2轮--------
2,0
3,1
4,7
5,6
---------第3轮--------
0,6
7,5
1,4
2,3
---------第4轮--------
3,0
4,2
5,1
6,7
---------第5轮--------
0,7
1,6
2,5
3,4
---------第6轮--------
4,0
5,3
6,2
7,1
---------第7轮--------
0,1
2,7
3,6
4,5

C# “贝格尔”编排法相关推荐

  1. 单循环赛贝格尔编排法实现

    单循环赛,是指所有参赛队伍都需跟其他队伍比赛一次,根据比赛得分,胜负场次来排列名次.比赛队伍为单数时,轮数等于队伍数,为双数时,轮数等于队伍数减一.如5支队伍需比赛5轮,6支队伍需比赛5轮. 首先介绍 ...

  2. 贝格尔编排法的PHP实现

    //贝格尔编排法的PHP实现public function berger(){set_time_limit(0);$n = 14; //队伍数if ($n%2==0) {$m=$n;}else{$m= ...

  3. PHP赛事贝格尔编排法--双循环

    //贝格尔编排法 function berger(){     // 双循环 // 根据队伍数量生成数组         $num = 10;         $ar = [];         fo ...

  4. PHP赛事贝格尔编排法--单循环

    //贝格尔编排法 function berger(){     //单循环     // 根据队伍数量生成数组         $num = 10;         $ar = [];         ...

  5. 贝格尔编排法之C++版

    轮转的步骤与之前的java代码不同,相对之前的更高效一些. // #include <iostream> #include<vector> using namespace st ...

  6. 贝格尔编排法-java

    2019独角兽企业重金招聘Python工程师标准>>> import java.util.Scanner; /*** 精简算法* @author jie**/ public clas ...

  7. 脑电波之父:汉斯·贝格尔_深度学习,认识聪明的汉斯

    脑电波之父:汉斯·贝格尔 Around 1900, a German farmer made an extraordinary claim: he had taught a horse basic a ...

  8. python求解运输问题_【Python实现】运输问题的表上作业法:利用伏格尔 (Vogel) 法寻找初始基可行解...

    #运输问题求解:使用Vogel逼近法寻找初始基本可行解 import numpy as np import pandas as pd import copy #定义函数TP_vogel,用来实现Vog ...

  9. 数值计算方法(三)——变步长梯形法与龙贝格算法

    变步长梯形算法 提出背景: 复化求积公式虽然能提高精度,但需要给出步长,步长精度太大则精度低,步长太小则计算量大,难以找到一个合适的步长(划分成的小区间的个数) 算法描述: 1.对所有已存在的子区间进 ...

最新文章

  1. 干货丨盘点人工智能从业者必备的10个深度学习方法
  2. mstsc VS vnc : 远程桌面最快的原因在于RDP协议
  3. Spring cloud zuul跨域(一)
  4. mysql 临时表 插入_mysql临时表插入数据有关问题
  5. 关闭NPC call(__)
  6. Expression Blend实例动画-大坝水位升高演示
  7. 2021计算机应用基础统考,2021年度计算机应用基础统考练习题及答案.doc
  8. MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist
  9. Android开发之多线程编程Thread和Runnable使用
  10. 6 个实用的 Code Review 实践技巧
  11. 在静态页面html中跳转传值
  12. 硬件基础之模电数电电路(一)
  13. cdr怎么算曲线周长_cdr怎么计算图形的周长和面积? cdr图形计算长度和面积的技巧...
  14. 2022.10.23高沿坪易地扶贫 霜降
  15. SDH同步数字系列(Synchronous Digital Hierarchy,SDH)--SONET同步光网络(Synchronous Optical NETwork,SONET)
  16. 巨头思科生死迷:错失重要时机 辉煌皆成尘土
  17. 旋转编码开关 EC11 的工作原理
  18. 24.STM32的IO口扩展PCF8574
  19. 一个简单的BitTorrent客户端实现(二):种子文件解析及信息保存
  20. 硬件加速不支持的问题

热门文章

  1. 用wireshark捕捉查看登录时账号密码的传输方式
  2. VUEX和filer过滤器的定义
  3. 【AMAD】django-filer -- 一个管理文件和图片的django app
  4. 《电商后台系统产品逻辑解析》学习笔记
  5. JS/正则 验证 数字 电话号码 传真 邮箱 手机号码 邮编 日期
  6. HDU-ACM程序设计——BFS(宽度优先搜索)
  7. 在网页中使用iframe嵌入B站视频(腾讯视频同理)
  8. MPLS 配置远端LDP会话实验 详解
  9. 全面了解风控指标体系
  10. HTML—— 超链接 行内框架 表格 知识总结。