110,533
社区成员
发帖
与我相关
我的任务
分享
static Dictionary<string, string[]> dic = new Dictionary<string, string[]>();
static string[] teams = { "AB", "BC", "CD", "DE", "EF", "FG" };
static void xxxDemo()
{
foreach (var team in teams)
{
if (dic.ContainsKey(team)) continue;
List<string> tmp = new List<string>(teams);
tmp.Remove(team);//移除自身
foreach (var kv in dic)
{
if (kv.Value.Contains(team))
{
//不能同时即为抽签又为被抽签队伍
tmp.Remove(kv.Key);
}
}
//移除已经选中2次的队伍
var groups = dic.Values.SelectMany(c => c.Select(x => x)).GroupBy(x => x).Where(g => g.Count() >= 2);
foreach (var g in groups)
{
tmp.Remove(g.Key);
}
dic.Add(team, tmp.OrderBy(g => Guid.NewGuid()).Take(2).ToArray());
}
Console.WriteLine(dic.Count);
}
最后一支队伍只有一个抽签的?这只是demo代码,实际你肯定要做调整的,你直接复制进去,然后xxxDemo()就只行了