C#递归求解八皇后

    技术2022-05-11  44

    很久没更新Blog了,开始玩玩算法吧,用递归写了一下八皇后,不知道是不是最优方案,继续研究其他的解法,尝试下回朔,代码如下      using  System; using  System.Collections.Generic; using  System.Text; namespace  Queen {    /*     * 八皇后问题     * @Author: Red_angelX     */    class Program    {        const int NCOUNT = 8;        static int[] QueenMap = new int[NCOUNT];        static int iCount = 1;        static void Main(string[] args)        {            int current = System.Environment.TickCount;            PlayQueen(0);            Console.WriteLine("Eclped {0} ms", Environment.TickCount - current);            Console.Read();        }        /*         * 核心函数,放置第N枚皇后(递归)         */        static void PlayQueen(int n)        {            if (n == NCOUNT)            {                PrintResult();                return;            }            for (int i = 1; i <= NCOUNT; i++)            {                QueenMap[n] = i;                if (IsValid(n))                    PlayQueen(n+1);            }                    }        /*         * 输出结果         */        static void PrintResult()        {            Console.Write("No.{0} ", iCount++);            for (int i = 0; i < NCOUNT; i++)                Console.Write("{0} ", QueenMap[i]);            Console.Write(" ");        }        /*         * 检查第n个皇后放上去之后是否合法         */        static bool IsValid(int n)        {            for (int i = 0; i < n; i++)            {                if (QueenMap[i] == QueenMap[n])                    return false;                if (Math.Abs(QueenMap[i] - QueenMap[n]) == n - i)                    return false;            }            return true;        }    }}         执行结果(Release版本):      No. 1   1   5   8   6   3   7   2   4 No. 2   1   6   8   3   7   4   2   5 No. 3   1   7   4   6   8   2   5   3 No. 4   1   7   5   8   2   4   6   3 No. 5   2   4   6   8   3   1   7   5 No. 6   2   5   7   1   3   8   6   4 No. 7   2   5   7   4   1   8   6   3 No. 8   2   6   1   7   4   8   3   5 No. 9   2   6   8   3   1   4   7   5 No. 10   2   7   3   6   8   5   1   4 No. 11   2   7   5   8   1   4   6   3 No. 12   2   8   6   1   3   5   7   4 No. 13   3   1   7   5   8   2   4   6 No. 14   3   5   2   8   1   7   4   6 No. 15   3   5   2   8   6   4   7   1 No. 16   3   5   7   1   4   2   8   6 No. 17   3   5   8   4   1   7   2   6 No. 18   3   6   2   5   8   1   7   4 No. 19   3   6   2   7   1   4   8   5 No. 20   3   6   2   7   5   1   8   4 No. 21   3   6   4   1   8   5   7   2 No. 22   3   6   4   2   8   5   7   1 No. 23   3   6   8   1   4   7   5   2 No. 24   3   6   8   1   5   7   2   4 No. 25   3   6   8   2   4   1   7   5 No. 26   3   7   2   8   5   1   4   6 No. 27   3   7   2   8   6   4   1   5 No. 28   3   8   4   7   1   6   2   5 No. 29   4   1   5   8   2   7   3   6 No. 30   4   1   5   8   6   3   7   2 No. 31   4   2   5   8   6   1   3   7 No. 32   4   2   7   3   6   8   1   5 No. 33   4   2   7   3   6   8   5   1 No. 34   4   2   7   5   1   8   6   3 No. 35   4   2   8   5   7   1   3   6 No. 36   4   2   8   6   1   3   5   7 No. 37   4   6   1   5   2   8   3   7 No. 38   4   6   8   2   7   1   3   5 No. 39   4   6   8   3   1   7   5   2 No. 40   4   7   1   8   5   2   6   3 No. 41   4   7   3   8   2   5   1   6 No. 42   4   7   5   2   6   1   3   8 No. 43   4   7   5   3   1   6   8   2 No. 44   4   8   1   3   6   2   7   5 No. 45   4   8   1   5   7   2   6   3 No. 46   4   8   5   3   1   7   2   6 No. 47   5   1   4   6   8   2   7   3 No. 48   5   1   8   4   2   7   3   6 No. 49   5   1   8   6   3   7   2   4 No. 50   5   2   4   6   8   3   1   7 No. 51   5   2   4   7   3   8   6   1 No. 52   5   2   6   1   7   4   8   3 No. 53   5   2   8   1   4   7   3   6 No. 54   5   3   1   6   8   2   4   7 No. 55   5   3   1   7   2   8   6   4 No. 56   5   3   8   4   7   1   6   2 No. 57   5   7   1   3   8   6   4   2 No. 58   5   7   1   4   2   8   6   3 No. 59   5   7   2   4   8   1   3   6 No. 60   5   7   2   6   3   1   4   8 No. 61   5   7   2   6   3   1   8   4 No. 62   5   7   4   1   3   8   6   2 No. 63   5   8   4   1   3   6   2   7 No. 64   5   8   4   1   7   2   6   3 No. 65   6   1   5   2   8   3   7   4 No. 66   6   2   7   1   3   5   8   4 No. 67   6   2   7   1   4   8   5   3 No. 68   6   3   1   7   5   8   2   4 No. 69   6   3   1   8   4   2   7   5 No. 70   6   3   1   8   5   2   4   7 No. 71   6   3   5   7   1   4   2   8 No. 72   6   3   5   8   1   4   2   7 No. 73   6   3   7   2   4   8   1   5 No. 74   6   3   7   2   8   5   1   4 No. 75   6   3   7   4   1   8   2   5 No. 76   6   4   1   5   8   2   7   3 No. 77   6   4   2   8   5   7   1   3 No. 78   6   4   7   1   3   5   2   8 No. 79   6   4   7   1   8   2   5   3 No. 80   6   8   2   4   1   7   5   3 No. 81   7   1   3   8   6   4   2   5 No. 82   7   2   4   1   8   5   3   6 No. 83   7   2   6   3   1   4   8   5 No. 84   7   3   1   6   8   5   2   4 No. 85   7   3   8   2   5   1   6   4 No. 86   7   4   2   5   8   1   3   6 No. 87   7   4   2   8   6   1   3   5 No. 88   7   5   3   1   6   8   2   4 No. 89   8   2   4   1   7   5   3   6 No. 90   8   2   5   3   1   7   4   6 No. 91   8   3   1   6   2   5   7   4 No. 92   8   4   1   3   6   2   7   5 Eclped  94  ms

    最新回复(0)