C#&.NET程序如何实现从长度为N的集合中取M个元素进行组合的(递归)算法呢?
1.25K 次浏览
在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程序中,应该如何实现呢?