C# 实现排列

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); } } } }
生成组合

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; namespace ConsoleApplication15 { class Program { static int count = 0; static int count_g = 0; static void Main(string[] args) { var sw=new Stopwatch(); sw.Start(); for (int i = 0; i < 1; i++) { var arr = new List<String> { "A", "B", "C", "D", "E", "F", "G", "H" };// // var arr = new List<String> { "A", "B", "C"};// var selectedList = new List<String>(); int m = 4; // C2(arr, selectedList, m, 0); C3(arr, selectedList, m); Console.WriteLine("Count:{0},Count_G:{1}", count, count_g); } sw.Stop(); Console.WriteLine("duration:{0}", sw.ElapsedMilliseconds); 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); } } } public static void C2(List<String> arr, List<String> selectedList, int m, int start) { var end = arr.Count ; for (int i = start; i < end; i++) { var item = arr[i]; var subSelectedList = new List<String>(); subSelectedList.AddRange(selectedList); subSelectedList.Add(item); #region 复制剩余的原始 start++; #endregion if (subSelectedList.Count < m) { C2(arr, subSelectedList, m, start ); } else { count++; Disp(subSelectedList); } } } public static void C3(List<String> remainList, List<String> selectedList, int m) { count_g++; for (int i = 0; i < remainList.Count; i++) { var item = remainList[i]; var subSelectedList = new List<String>(); subSelectedList.AddRange(selectedList); subSelectedList.Add(item); var len = subSelectedList.Count + (remainList.Count - (i + 1)); if (len < m) return; #region 复制剩余的原始 var remainList2 = new List<String>(); for (int j = i + 1; j < remainList.Count; j++) { var it = remainList[j]; remainList2.Add(it); } #endregion if (subSelectedList.Count < m) { C3(remainList2, subSelectedList, m); } else { count++; Disp(subSelectedList); } } } } }

public static void C2(List<String> arr, List<String> selectedList, int m, int start) { var end = arr.Count ; for (int i = start; i < end; i++) { var item = arr[i]; var subSelectedList = new List<String>(); subSelectedList.AddRange(selectedList); subSelectedList.Add(item); var len = subSelectedList.Count + (arr.Count - (i + 1)); if (len < m) return; if (subSelectedList.Count < m) { C2(arr, subSelectedList, m, i+1 ); } else { count++; Disp(subSelectedList); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2016-09-26 eclipse android项目复制
2008-09-26 非递归一次性加载分类数据到TreeViw
2008-09-26 Asp.net中TreeView gb2312状态PopulateNodesFromClient乱码问题