欧洲冠军联赛R16战平C#

欧洲冠军联赛R16战平C#,c#,algorithm,C#,Algorithm,欧冠16强淘汰赛是一场比赛,16支欧洲足球队在8场比赛中互为平局。有几个规则: -来自同一国家的国家不得相互勾结。 -以前在小组赛上打过球的球队不得相互抽签 欧足联将球队分为两类: -之前在小组赛中获胜的球队。 -前一轮的亚军 根据上述规则,从pot 1中抽取一个团队,然后将pot 2调整为仅包含团队 有一个在线模拟器,它显示的与绘图完全相同: 这在C语言中似乎相当容易实现,但是,按照我尝试的方式,在接近抽签结束时,抽签可能会被卡住。这就是我需要帮助的部分 比如说。抽签已经接近尾声了。。。 -

欧冠16强淘汰赛是一场比赛,16支欧洲足球队在8场比赛中互为平局。有几个规则: -来自同一国家的国家不得相互勾结。 -以前在小组赛上打过球的球队不得相互抽签

欧足联将球队分为两类: -之前在小组赛中获胜的球队。 -前一轮的亚军

根据上述规则,从pot 1中抽取一个团队,然后将pot 2调整为仅包含团队

有一个在线模拟器,它显示的与绘图完全相同:

这在C语言中似乎相当容易实现,但是,按照我尝试的方式,在接近抽签结束时,抽签可能会被卡住。这就是我需要帮助的部分

比如说。抽签已经接近尾声了。。。 -第一区有三支球队:巴塞罗那、尤文图斯和利物浦 -三支球队在第二洞:皇家马德里、曼城和本菲卡

尤文图斯是从第一号投手中挑选出来的。这使得皇家马德里、曼城和本菲卡成为第二个选择。本菲卡被平局了,所以尤文图斯将对阵本菲卡。 接下来我们从第一罐中选择巴塞罗那。曼城是唯一可能的选择(因为皇家马德里和巴塞罗那来自同一个国家),所以巴塞罗那对曼城的比赛被画出来。 这只剩下利物浦和皇家马德里了。但是他们以前在小组赛阶段打过球,使得平局违反了规则

有人能在C#中帮助实现这一点吗?
我不确定在抽签的每个阶段需要哪种算法才能找到可用的球队。

你需要从另一个方向检查:皇家马德里不能面对巴塞罗那或利物浦。所以这将直接是马德里-尤文图斯。同意,但这是一个简单的例子。有时我在第一步中的选择只会影响两步后的平局…你必须使用回溯。也就是说,每当你有多个团队的选择时,记录你的选择和你所做的选择。稍后,如果您被卡住,请倒带到最新的选择点,然后进行另一个选择。如果在某个特定的回放点没有选择,请返回到上一个点,依此类推。如果我不显示正在执行的绘图,而只显示最终结果,这将是一个很好的解决方案。在我的应用程序中,我希望呈现实时绘制,每个选项都被绘制,而不是倒带。正如我在上面提供的模拟器中所看到的,你必须在抽签的每个阶段与每个pot中的现有团队进行计算,因为选择会使所有剩余团队的模拟处于可解析状态。例如,正如你提到的,如果尤文和本菲卡被抽签,那么这可能导致无效状态。你可以做的是从第一区中选择一支球队(即尤文),然后你需要解决抽签问题,这样你就可以从第二区中选择一支候选球队,并从中进行选择(即第二区中的一个子组)