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/archive/2007/05/02/734353.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值