C# “贝格尔”编排法

简介: 原文:C# “贝格尔”编排法采用“贝格尔”编排法,编排时如果参赛队为双数时,把参赛队数分一半(参赛队为单数时,最后以“0”表示形成双数),前一半由1号开始,自上而下写在左边;后一半的数自下而上写在右边,然后用横线把相对的号数连接起来。
原文: C# “贝格尔”编排法

采用“ 贝格尔”编排法,编排时如果参赛队为双数时,把参赛队数分一半(参赛队为单数时,最后以“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+1
    int 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

目录
相关文章
|
9月前
|
IDE 编译器 项目管理
Dev-C++保姆级安装教程:Win10/Win11环境配置+避坑指南(附下载验证)
Dev-C++ 是一款专为 Windows 系统设计的轻量级 C/C++ 集成开发环境(IDE),内置 MinGW 编译器与调试器,支持代码高亮、项目管理等功能。4.9.9 版本作为经典稳定版,适合初学者和教学使用。本文详细介绍其安装流程、配置方法、功能验证及常见问题解决,同时提供进阶技巧和扩展学习资源,帮助用户快速上手并高效开发。
|
存储 缓存 固态存储
阿里云服务器2核8G、4核16G、8核32G配置租用收费标准与活动价格参考
2核8G、8核32G、4核16G配置的云服务器处理器与内存比为1:4,这种配比的云服务器一般适用于中小型数据库系统、缓存、搜索集群和企业办公类应用等通用型场景,因此,多为企业级用户选择。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
缓存 前端开发 JavaScript
构建高性能单页应用(SPA)的实践与优化
构建高性能单页应用(SPA)的实践与优化
339 7
|
Linux iOS开发 MacOS
安装Python 在 Windows、macOS 和 Linux上的详细步骤
安装Python 在 Windows、macOS 和 Linux上的详细步骤
592 2
|
机器学习/深度学习 人工智能 自然语言处理
ICML 2024 Spotlight:在解码中重新对齐,让语言模型更少幻觉、更符合人类偏好
【7月更文挑战第13天】ICML 2024 Spotlight: Decoding-time Realignment改善语言模型,减少幻觉,增强人类偏好一致性。研究提出在解码阶段动态调整模型对齐,通过控制参数实现对齐与性能平衡,提高泛化能力。尽管面临参数选择及计算资源挑战,该技术为优化AI文本生成对齐提供了新途径。[论文链接](https://openreview.net/forum?id=n8g6WMxt09&noteId=E3VVDPVOPZ)**
340 9
|
人工智能 算法 机器人
Github上5个实用的ChatGPT仓库
Github上5个实用的ChatGPT仓库
525 0
|
Web App开发 运维 安全
最全构建属于自己的 Linux 发行版_定制自制linux(3),开发人员必学
最全构建属于自己的 Linux 发行版_定制自制linux(3),开发人员必学
最全构建属于自己的 Linux 发行版_定制自制linux(3),开发人员必学
|
网络协议 安全 网络安全
解析IPv6报文结构
【7月更文挑战第1天】IPv6报文结构包括基本头和可选的扩展头,基本头固定40字节,含8个字段,不支持分片,提升了处理效率。扩展头灵活处理选项,长度为8字节的倍数,可包含如路由、分片、认证和安全封装等信息。多个扩展头按特定顺序排列,目的选项头可出现两次。
|
JSON Rust IDE
全网最全的Rust学习资源
学习Rust过程中整理了一些学习资料分享一下。
919 1
|
UED 开发者 Python
Python中使用`requests`库进行重定向与超时控制的技术详解
【4月更文挑战第12天】在Web开发中,处理HTTP重定向和请求超时是常见的需求。`requests`库作为Python中处理HTTP请求的利器,提供了丰富的功能来满足这些需求。本文将详细探讨如何在Python中使用`requests`库进行重定向处理和超时控制。