• 全排列递归算法


    全排列比较常见的用于暴力破解,以下是常见的递归算法:

    Length的值确定全排列的个数

    1、判断数组长度是否达到Length的值,如果达到则结束,如果没达到做步骤2。

    2、向数组添从小到大(不超过Length)添加一个数(添加前检查该数是否已经添加)。

    3、调用步骤1(递归调用)。

    class Program
        {
            private static readonly int Lengh = 3;
            static void Main(string[] args)
            {
                List<int> a = new List<int>();
                fun(a);
            }
    
            public static void fun(List<int> a)
            {
                if (a.Count == Lengh)
                {
                    for (int i = 0; i < a.Count; i++)
                    {
                        Console.Write(a[i] + "  ");
                    }
                    Console.WriteLine();
                }
                else
                {
                    for (int i = 1; i <= Lengh; i++)
                    {
                        if (CheckAdd(i, a))
                        {
                            a.Add(i);
                            fun(a);
                            a.RemoveAt(a.Count - 1);
                        }
                    }
                }
            }
    
            private static bool CheckAdd(int i, List<int> a)
            {
                for (int k = 0; k < a.Count; k++)
                {
                    if (a[k] == i)
                    {
                        return false;
                    }
                }
                return true;
            }
        }
  • 相关阅读:
    sys.argv
    webbrowser
    2014年11月26日(程序员的加班)
    下一站红灯
    Java基础知识总结(超级经典)
    JAVA的三个开发方向
    2014年11月23日
    大学,一切才刚刚开始
    XML学习总结
    C# 文件重命名
  • 原文地址:https://www.cnblogs.com/xiaoxueyong/p/5278571.html
Copyright © 2020-2023  润新知