相关疑难解决方法(0)

生成字符串列表的所有组合

我想生成一个字符串列表的所有可能组合的列表(它实际上是一个对象列表,但为了简单起见,我们将使用字符串).我需要这个列表,以便我可以在单元测试中测试每个可能的组合.

例如,如果我有一个列表:

  var allValues = new List<string>() { "A1", "A2", "A3", "B1", "B2", "C1" }
Run Code Online (Sandbox Code Playgroud)

我需要一个List<List<string>>所有组合,如:

  A1
  A2
  A3
  B1
  B2
  C1
  A1 A2
  A1 A2 A3
  A1 A2 A3 B1
  A1 A2 A3 B1 B2
  A1 A2 A3 B1 B2 C1
  A1 A3
  A1 A3 B1
  etc...
Run Code Online (Sandbox Code Playgroud)

递归函数可能是获得所有组合的方法,但它似乎比我想象的更难.

有什么指针吗?

谢谢.

编辑:两个解决方案,有或没有递归:

public class CombinationGenerator<T>
{
    public IEnumerable<List<T>> ProduceWithRecursion(List<T> allValues) 
    {
        for (var i = 0; i < (1 << allValues.Count); i++)
        {
            yield return ConstructSetFromBits(i).Select(n => allValues[n]).ToList(); …
Run Code Online (Sandbox Code Playgroud)

c# math combinations

16
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×1

combinations ×1

math ×1