zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    hdoj_1800Flying to the Mars
    SPFA模版
    树状数组
    hdoj_1385Minimum Transport Cost
    hdoj_2112
    hdoj_3665Seaside
    Java的垃圾回收之算法
    Oracle和MySQL、PostgreSQL特性对比
    什么是java对象的强、软、弱和虚引用
    线程池(java.util.concurrent.ThreadPoolExecutor)的使用(一)
  • 原文地址:https://www.cnblogs.com/Red_angelX/p/734353.html
Copyright © 2011-2022 走看看