gpt4 book ai didi

c# - 3组更多值的组合算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:30 26 4
gpt4 key购买 nike

我需要创建一个过程,使我能够获得三个或更多组唯一的三个重复值的完整组合集。

例如,我可以有 3 个组(R1 - R2 - R3)和三个值(A - AB - B),我必须将所有可能的组合分成 3 个组。

像这样:

Groups    1°   2°   3°   4°   5°   .......

R1 A - A - AB - AB - AB ...
R2 A - A - A - A - BB ...
R3 A - AB - A - A - A ...

我必须确保所有可能的序列都存在并且从不重复。

不幸的是,我是编程界的新手,对组合数学一无所知。我不知道如何处理它...

如果我不清楚,我深表歉意,并提前感谢任何能给我一些帮助的人。

最佳答案

我想你想要你的值(value)观的所有组合....

这是在 C# 中执行此操作的通用方法...

static IEnumerable<IEnumerable<T>> Combinations<T>(IEnumerable<T> list, int length)
{
if (length == 1) return list.Select(t => new T[] { t });

return Combinations(list, length - 1)
.SelectMany(t => list, (t1, t2) => t1.Concat(new T[] { t2 }));
}

你这样调用它......

    var groups = new List<string>() { "R1", "R2", "R3" };
var values = new List<string>() { "AA", "AB", "BB" };
var combinations = Combinations(values, groups.Count);
var i = 0;
var stringFormat = string.Join(", ", groups.Select(x => x +"={"+ i++ +"}"));
// stringFormat looks like "R1={0}, R2={1}, R3={2}"
foreach (var value in combinations)
{
var arrayOfValues = value.ToArray(); // each value is a list of the combinations.
Console.WriteLine(string.Format(stringFormat, arrayOfValues));
}

你提到你缺乏经验,所以我用更容易理解的硬编码方式包括在内......

    var values = new List<string>() { "AA", "AB", "BB" };
foreach (var value1 in values)
{
foreach (var value2 in values)
{
foreach (var value3 in values)
{
Console.WriteLine(string.Format("R1 = {0}, R2 = {1}, R3 = {2}", value1, value2, value3));
}
}
}

输出看起来像这样......

R1=AA, R2=AA, R3=AA
R1=AA, R2=AA, R3=AB
R1=AA, R2=AA, R3=BB
R1=AA, R2=AB, R3=AA
R1=AA, R2=AB, R3=AB
R1=AA, R2=AB, R3=BB
R1=AA, R2=BB, R3=AA
R1=AA, R2=BB, R3=AB
R1=AA, R2=BB, R3=BB
R1=AB, R2=AA, R3=AA
R1=AB, R2=AA, R3=AB
R1=AB, R2=AA, R3=BB
R1=AB, R2=AB, R3=AA
R1=AB, R2=AB, R3=AB
R1=AB, R2=AB, R3=BB
R1=AB, R2=BB, R3=AA
R1=AB, R2=BB, R3=AB
R1=AB, R2=BB, R3=BB
R1=BB, R2=AA, R3=AA
R1=BB, R2=AA, R3=AB
R1=BB, R2=AA, R3=BB
R1=BB, R2=AB, R3=AA
R1=BB, R2=AB, R3=AB
R1=BB, R2=AB, R3=BB
R1=BB, R2=BB, R3=AA
R1=BB, R2=BB, R3=AB
R1=BB, R2=BB, R3=BB

关于c# - 3组更多值的组合算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17688281/

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