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# “贝格尔”编排法相关推荐
- 单循环赛贝格尔编排法实现
单循环赛,是指所有参赛队伍都需跟其他队伍比赛一次,根据比赛得分,胜负场次来排列名次.比赛队伍为单数时,轮数等于队伍数,为双数时,轮数等于队伍数减一.如5支队伍需比赛5轮,6支队伍需比赛5轮. 首先介绍 ...
- 贝格尔编排法的PHP实现
//贝格尔编排法的PHP实现public function berger(){set_time_limit(0);$n = 14; //队伍数if ($n%2==0) {$m=$n;}else{$m= ...
- PHP赛事贝格尔编排法--双循环
//贝格尔编排法 function berger(){ // 双循环 // 根据队伍数量生成数组 $num = 10; $ar = []; fo ...
- PHP赛事贝格尔编排法--单循环
//贝格尔编排法 function berger(){ //单循环 // 根据队伍数量生成数组 $num = 10; $ar = []; ...
- 贝格尔编排法之C++版
轮转的步骤与之前的java代码不同,相对之前的更高效一些. // #include <iostream> #include<vector> using namespace st ...
- 贝格尔编排法-java
2019独角兽企业重金招聘Python工程师标准>>> import java.util.Scanner; /*** 精简算法* @author jie**/ public clas ...
- 脑电波之父:汉斯·贝格尔_深度学习,认识聪明的汉斯
脑电波之父:汉斯·贝格尔 Around 1900, a German farmer made an extraordinary claim: he had taught a horse basic a ...
- python求解运输问题_【Python实现】运输问题的表上作业法:利用伏格尔 (Vogel) 法寻找初始基可行解...
#运输问题求解:使用Vogel逼近法寻找初始基本可行解 import numpy as np import pandas as pd import copy #定义函数TP_vogel,用来实现Vog ...
- 数值计算方法(三)——变步长梯形法与龙贝格算法
变步长梯形算法 提出背景: 复化求积公式虽然能提高精度,但需要给出步长,步长精度太大则精度低,步长太小则计算量大,难以找到一个合适的步长(划分成的小区间的个数) 算法描述: 1.对所有已存在的子区间进 ...
最新文章
- iOS开发UI篇—transframe属性(形变)
- 人类基因测序被重新定义,时间减半创世界纪录
- 性能提高和支持IE 9的新的ExtJS发布版:4.02和3.4
- S3C2440时钟系统详解
- ZOJ 3735 Josephina and RPG
- XML学习笔记--导航
- 数据结构树的基本操作_数据结构二叉树的基本操作~~~~
- 书写「简历」时,需要规避的错误
- java中的流思想_Java8新特性 Stream流式思想(二)
- 线性支持向量机与软间隔最大化
- Win10配置FORTRAN环境 CodeBlocks下载安装教程
- CFD后处理出图软件Tecplot的操作技巧(未完待续)
- 微信小程序插件安装Vant有赞组件库
- 面试题,微信红包为啥不能撤回?
- 城市生活污水处理技术现状及活性炭的应用
- (随笔备忘)装系统—— centos7下制作U盘启动盘还是失败待试,换大白菜
- 常用eclips快捷键小结
- chrome点击下载链接没有反应
- FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation
- pythonQQ机器人系列:使用requests实现QQ机器人聊天(1-0)
热门文章
- 2019千股跌停情况是什么?千股跌停原因都有哪些?
- flex+php ria应用开发实战详解,《Flex+PHP RIA应用开发实战详解-梁文新版》学习日记2...
- hivesql失败告警发送到企业微信
- 目标检测任务超大图像的切图实现
- 实现一个脚本引擎(燕良译)- -
- 视频字幕API接口文档
- java 线程执行结束_java中怎么判断线程执行完毕
- 炒菜更香的39个小窍门
- 三位整数两位小数掩码_子网掩码转换32位整数
- 学习Unity需要学习哪些编程语言