zoukankan      html  css  js  c++  java
  • 八皇后问题 回溯法

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace Demo
     8 {
     9     class Program
    10     {
    11         static int num = 8;/*可以随意修改,num是多少解的就是几皇后问题*/
    12         static int[] arr = new int[8];
    13         static int count = 0;
    14         static void display()/*一个简单的数组输出函数,顺便统计解的个数*/
    15         {
    16             for (int i = 0; i < num; ++i)
    17             {
    18                 for (int j = 0; j < num; j++)
    19                 {
    20                     if (arr[i] == j)
    21                         Console.Write("Q");
    22                     else
    23                         Console.Write("*");
    24                 }
    25 
    26                 Console.WriteLine(" ");
    27             }
    28             count++;
    29             Console.WriteLine("-------------" + count.ToString() + "--------------------");
    30         }
    31 
    32         static void queens(int pos = 0)
    33         {
    34             /*同在斜线或者直线上*/
    35             for (int i = 0; i < pos-1; ++i)
    36              {
    37                 int off = arr[i] - arr[pos - 1];
    38                 if (off == 0 || off == pos - 1 - i || -off == pos - 1 - i)
    39                     return;
    40             }
    41 
    42             /*符合条件就输出*/
    43             if (pos == num)
    44             { 
    45                 display(); 
    46                 return; 
    47             }
    48 
    49             /*递归搜索解空间*/
    50             for (int k = 0; k < num; ++k)
    51             {
    52                 arr[pos] = k;
    53                 queens(pos + 1);
    54             }
    55         }
    56 
    57         static void Main(string[] args)
    58         {
    59             queens(0);
    60 
    61             Console.ReadKey();
    62 
    63         }
    64     }
    65 }
  • 相关阅读:
    Python连接MySQL
    Python监控文件夹 && 发送邮件
    CentOS安装Redis
    weak_ptr
    libevent(六)http server
    libevent(五)使用例子
    laravel查询数据库获取结果如何判断是否为空?
    centos7 php-fpm 开机启动
    centos7 防火墙
    Laravel
  • 原文地址:https://www.cnblogs.com/mandalaluo/p/4204269.html
Copyright © 2011-2022 走看看