C# 比较列表中X个项目的数量和Y个项目的数量,并对它们进行限定
假设我有C# 比较列表中X个项目的数量和Y个项目的数量,并对它们进行限定,c#,algorithm,list,linq,data-structures,C#,Algorithm,List,Linq,Data Structures,假设我有3个小组,每个小组分为组,每组8个小组,我需要决定哪个小组在该组的位置 位置1上的team 1和位置1上的team 2的组合给出了0个故障, 但是team 1在position 1和team 2在position 2的组合给出了故障2 现在我需要根据球队的失误为他们找到最佳位置。如果只针对两个团队,那么这很容易。但如果是X队的话,情况就变得更难了。除此之外,还可以在组中设置已填充的职位,以便无法相互比较这些职位 为了简单起见,我只为4号和8号的组添加了一个小示例,但是有2到8号的组 对于
3个小组
,每个小组分为组,每组8个
小组,我需要决定哪个小组在该组的位置
位置1上的team 1
和位置1上的team 2
的组合给出了0个故障
,
但是team 1
在position 1
和team 2
在position 2
的组合给出了故障2
现在我需要根据球队的失误为他们找到最佳位置。如果只针对两个团队,那么这很容易。但如果是X队的话,情况就变得更难了。除此之外,还可以在组中设置已填充的职位,以便无法相互比较这些职位
为了简单起见,我只为4号和8号的组添加了一个小示例,但是有2到8号的组
对于所有这些GroupSize,我有+-模式,并且还计算了它们的错误
因此,对于下面的这个例子,我可以将所有团队放在第1位
但当其中一组中的位置1已经被占据时,情况就不同了
我需要找到故障最少的最佳选择
背景
这些组看起来像这样。。。其中null为空位置
故障计算的几种模式
8号组
4号组
故障计算
当on位置X==+和Y位置Y==-或反之亦然时,我们计算故障数
如果我们在某些位置找到+=+或-=-则无故障
foreach (var teamAvailableLineNumberA in teamAvailableLineNumbers) {
foreach (var availableLineNumberA in teamAvailableLineNumberA.Value) {
foreach (var teamAvailableLineNumberB in teamAvailableLineNumbers) {
if (teamAvailableLineNumberA.Key == teamAvailableLineNumberB.Key) { continue; } //Dont process yourself
foreach (var availableLineNumberB in teamAvailableLineNumberB.Value) {
var teamA = teamAvailableLineNumberA.Key;
var teamB = teamAvailableLineNumberB.Key;
var pmSchema = APlusMinusSchemas.Single(pm => pm.DrawSize == teamA.Group.GroupSize);
var complementartyLine =pmSchema.LineNumbers[availableLineNumberA].ComplementaryLines.Single(cl => cl.DrawSize == teamB.Group.GroupSize && cl.LineNumber == availableLineNumberB);
if (complementartyLine != null) {
listOfComplementaryLinesByTeamCombination.Add(new Tuple<Team, Team, int, int, int>(teamA,teamB,availableLineNumberA, availableLineNumberB, complementartyLine.NumberOfFaultsHomeHome));
}
}
}
}
}
foreach(teamAvailableLineNumbers中的var teamAvailableLineNumberA){
foreach(teamAvailableLineNumberA.Value中的var availableLineNumberA){
foreach(teamAvailableLineNumbers中的var teamAvailableLineNumberB){
如果(teamAvailableLineNumberA.Key==teamAvailableLineNumberB.Key){continue;}//不要自己处理
foreach(TeamAvailableLineNumberberb.Value中的var AvailableLineNumberberb){
var teamA=teamAvailableLineNumberA.Key;
var teamB=teamAvailableLineNumberB.Key;
var pmSchema=aplusminschemas.Single(pm=>pm.DrawSize==teamA.Group.GroupSize);
var complementartyLine=pmSchema.LineNumbers[availableLineNumberA].ComplementaryLines.Single(cl=>cl.DrawSize==teamB.Group.GroupSize&&cl.LineNumber==availableLineNumberB);
if(补体关联!=null){
添加(新元组(teamA、teamB、availableLineNumberA、availableLineNumberB、complementartyLine.NumberOfFaultsHomeHome));
}
}
}
}
}
teamAvailableLineNumbers=字典
,其中列表
是其所在组的可用位置
我如何创建一个算法/数据结构来计算和保存未知数量的团队的此类信息,这些团队拥有未知数量的可用职位
我希望有人能帮我解决这个问题。每个团队都是由8个团队组成的团队,我不知道你的意思-你能重新表述一下吗?也许你也可以简短地介绍一下你想要结束的数据结构,例如,你在描述“团队”中的“位置”——这是什么?首先,不清楚错误与团队在团队中的位置有什么关系。第二,什么应该决定一个团队的位置。你说错误决定一切。但错误只是一个数字。实际的标准是什么?(现在你刚刚告诉我们,团队应该按照某个数字的某个值进行排列——这并没有说明任何具体情况,不是吗?)当你设法对你想要实现的目标做出详细而具体的解释时,我不会感到惊讶,您同时还将拥有您应该/可以编写的代码的蓝图……听起来您对“在运行时更改循环的数量”之类的东西感兴趣,这取决于X,团队的数量。也许我最近在另一个问题上发布的这个答案很有帮助:明天我将尝试以更好的方式解释