zoukankan      html  css  js  c++  java
  • 全排列递归算法

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

    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;
            }
        }
  • 相关阅读:
    UVa 727
    UVa 11495
    UVa 299
    UVa 10194
    UVa 146
    10025
    Tug of War POJ 2576 DP(类似背包)
    Problem A: Freckles UVA 10034 裸生成树
    UVA 562
    CF DIV 2 206 C. Vasya and Robot
  • 原文地址:https://www.cnblogs.com/xiaoxueyong/p/5278571.html
Copyright © 2011-2022 走看看