• [原创]:排列(组合)算法的实现:


    排列(组合)算法的实现

         /// <summary>
            /// 递归算法求排列
            /// </summary>
            /// <typeparam name="T">泛型类型</typeparam>
            /// <param name="array"></param>
            /// <param name="startIndex"></param>
            /// <param name="endIndex"></param>
            public static void GetPermutation<T>(T[] array, int startIndex, int endIndex)
            {
                if (startIndex == endIndex)
                {
                    StringBuilder temp = new StringBuilder();
    
                    foreach (var item in array)
                    {
                        temp.Append(item.ToString());
                    }
    
                    Console.WriteLine(temp.ToString());
                }
                else
                {
                    for (int i = startIndex; i <= endIndex; i++)
                    {
                        Swap(ref array[startIndex], ref array[i]);
                        GetPermutation<T>(array, startIndex + 1, endIndex);
                        Swap(ref array[i], ref array[startIndex]);
                    }
                }
            }
    

      

     组合的情况:

     public static void Combine(char[] array, bool[] b, int start, int end)
            {
    
                if (start <= end)
                {
                    // 包含 array[start]
                    b[start] = true;
                    Combine(array, b, start + 1, end);
    
                    // 不包含 array[start]
                    b[start] = false;
                    Combine(array, b, start + 1, end);
                }
                else
                {
                    for (int i = 0; i <= end; ++i)
                    {
                        if (b[i])
                        {
                            Console.WriteLine(array[i]);
                        }
                    }
    
                    Console.WriteLine("-------------------------");
                }
            }

    refer: 

    http://www.cnblogs.com/snowdust/archive/2010/01/20/1652161.html

    http://blog.csdn.net/lcl_data/article/details/5286847

    http://yuyangc0008.blog.163.com/blog/static/54754220138492632191/

    好文章:

    http://www.cnblogs.com/luxiaoxun/archive/2012/08/08/2628153.html

  • 相关阅读:
    基于LORA的无线广域物联网应用系统设计
    使用ESP8266、NodeMCU、机智云改造传统插座为智能插座
    嵌入式技术的智能闭环反馈增氧系统
    pythonyaml文件写法和使用
    this的二种使用方式
    实例变量和局部变量 对象的实例方法
    方法重载
    封装
    面向对象 类
    构造方法
  • 原文地址:https://www.cnblogs.com/Jessy/p/3559354.html
Copyright © 2020-2023  润新知