class Program { static int count = 0; static void Main(string[] args) { var remainList = new List<string>() { "A", "B", "C" , "D", "E","F","G" };// var selectedList = new List<String>(); int m = 3; C(remainList, selectedList, m); Console.WriteLine("Count:{0}", count); Console.ReadLine(); } public static void Disp(List<string> arr) { foreach (var it in arr) { Console.Write(it); } Console.WriteLine(); } public static void C(List<String> remainList, List<String> selectedList, int m) { foreach (var item in remainList) { var subSelectedList = new List<String>(); subSelectedList.AddRange(selectedList); subSelectedList.Add(item); #region 复制剩余的原始 var remainList2 = new List<String>(); foreach (var it in remainList) { if (it != item) { remainList2.Add(it); } } #endregion if (subSelectedList.Count < m) { C(remainList2, subSelectedList, m ); } else { count++; Disp(subSelectedList); } } } }
靠该成数组,结果可保存成字典