首页 / 问答 / C#&.NET程序如何实现从长度为N的集合中取M个元素进行组合的(递归)算法呢?

C#&.NET程序如何实现从长度为N的集合中取M个元素进行组合的(递归)算法呢?

.NET C# 组合 集合 .NET Core .NET 6 1.25K 次浏览
0

在C#&.NET的程序中,有一个长度为N的集合List,现在想对这个List集合中的元素进行组合操作。比如,从这个长度为N的List集合中任意取M个元素进行组合,列出所有的组合,无需排列,不考虑顺序。

比如,有如下的集合strArr

List<string> strArr = new List<string> { "A", "B", "C", "D", "E", "F", "G", "H" };

当M为2时期望的组合结果为:

(A,B) (A,C) (A,D) (A,E) (A,F) (A,G) (A,H) (B,C) (B,D)...

当M为3时期望的组合结果为:

(A,B,C) (A,B,D) (A,B,E) (A,B,F) (A,B,G) (A,B,H) (A,C,D) (A,C,E) (A,C,F) (A,C,G) (A,C,H) (A,D,E) (A,D,F) (A,D,G) (A,D,H) (A,E,F) (A,E,G) (A,E,H) (A,F,G) (A,F,H) (A,G,H) (B,C,D) (B,C,E) (B,C,F)...

C#&.NET程序中,应该如何实现呢?

回复 [×]
提交评论
请输入评论内容

2 个回答

  • 0

    以下是一个以递归算法实现的C#&.NET版本的从长度为N的集合中取M个元素的组合示例:

    运行结果为:

    Rector的个人主页

    Rector

    2022-05-14 回答

    • 0

      一种使用LINQ+递归实现的简洁扩展方法,示例代码如下:

      调用示例:

      Rector的个人主页

      Rector

      2022-05-14 回答

      我来回答