• 八皇后问题


    八皇后问题题解
    这应该是典型的递归问题,当然也涉及枚举问题,回溯法;
    首先对第一个皇后进行排序,第一列有8个位置供她选择,然后将其所在的行和两千对角线分别进行标记三个数
    组中,在进行第n个皇后进行排序有八个位置供她选择,但要检验其所在行和对角线上是否已被其他皇后占领。
    还有是一定要搞明白出栈问题,在出战后要对标志进行变回原值。

    输出是运用的小技巧很赞奥

     1 #include<stdio.h>
     2 int a[16]={0},b[16]={0},c[16]={0};
     3 int q[8];
     4 int num=0;
     5 void puts(int n)
     6 {
     7     int i,t;
     8     printf("No. %d
    ",n);
     9     for(i=0;i<8;i++)
    10         {for(t=0;t<8;t++)
    11     {
    12         if(t==q[i])printf("Q ");
    13         else printf("* ");
    14     }
    15         printf("
    ");
    16         }
    17 }
    18 void queen(int cur)
    19 {
    20     int i,t;
    21     if(cur==8){
    22         num++;
    23         puts(num);
    24     }
    25     else
    26     for(i=0;i<8;i++){
    27         if(a[i]==0&&b[i+cur]==0&&c[cur-i+8]==0)
    28     {
    29         q[cur]=i;
    30         a[i]=1;b[i+cur]=1;c[cur-i+8]=1;
    31         queen(cur+1);
    32         a[i]=0;b[i+cur]=0;c[cur-i+8]=0;
    33     }}
    34 }
    35 int main()
    36 {
    37     int t=0;
    38     queen(t);
    39     printf("%d",num);
    40     return 0;
    41 }
  • 相关阅读:
    基于mysql-JDBC的java编程(通过java连接数据库)
    mysql-windows系统上的安装配置
    Jsp编程的基础模型
    CSPRNG随机数产生器
    IntlChar()
    unserialize()过滤机制
    Closure::call()
    PHP匿名类
    LINUX 安装PHP7教程
    解析UNICODE方法
  • 原文地址:https://www.cnblogs.com/dongq/p/4151773.html
Copyright © 2020-2023  润新知