C# 实现排列

发布时间 2023-09-26 16:50:53作者: 遗忘海岸
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);
                }

                
            }

           
        }
    }
View Code

靠该成数组,结果可保存成字典