gpt4 book ai didi

c# - 双败赛数据结构

转载 作者:太空狗 更新时间:2023-10-29 19:44:44 24 4
gpt4 key购买 nike

我正在转换我的 Tournament Organizer 软件,该软件允许创建和操作双败淘汰赛,以使用 MVVM 设计模式,以便可以更轻松地对其进行测试。这样做时,我将“模型”与 UI 中直接操作括号结构的一些代码分开。

这将是我为处理锦标赛而编写的软件的第三次迭代。第一个是用 PHP 编写的,并将数据存储在数据库中。第二个版本是我做的WPF版本,它将数据存储在内存中,然后序列化为一个XML文件。然而,在这两个版本中,我觉得有些实现方面并不干净,而且它们似乎违反了 DRY 法则。

如果您要从头开始创建一个数据结构来处理双重消除括号,您会怎么做?

请注意,它不需要能够通过算法自动生成括号(我现在正在使用 4/8/16/32 人的预制双淘汰加载),只是设置比赛获胜者并通过括号“推进”他们的主要用例。

编辑:为了清楚起见,数据结构需要处理双败淘汰赛,因此一场比赛的获胜者可能最终会与另一场比赛的失败者竞争。

最佳答案

因此,在终点处,您有 64 个团队。因此,不知何故,有 64 个团队的集合。

但他们是配对的,每对都有一个赢家。在中间的括号中,获胜者实际上是从括号中出现的,所以我认为您的括号对象实际上看起来像:

public class Bracket
{
Team winner; //if this is null or whatever, then we don't have a winner yet
Bracket topBracket;
Bracket bottomBracket;
}

...当您实例化您的目标时,您只需将两个子括号留空,只有一个获胜者。

为了处理双败淘汰赛,还有第二个败者组。如果您可以自动处理将失败者添加到该组别中(设计一个以 32 开头的组别,谁打到 16,添加第 2 轮获胜者组别中的 16 名失败者,等等),那就太好了,但这就是全部实现。数据结构不需要更改以适应这种情况,您只需要更多。

关于c# - 双败赛数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/589858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com