C#递归求解八皇后

     代码如下:
    
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

原文地址:https://www.cnblogs.com/Red_angelX/p/734353.html