zoukankan      html  css  js  c++  java
  • 八皇后问题(回溯_排列树)

    时限:1000ms 内存限制:10000K 总时限:3000ms

    描述:

    输出8皇后问题所有结果。

    输入:

    没有输入。

    输出:

    每个结果第一行是No n:的形式,n表示输出的是第几个结果;下面8行,每行8个字符,‘A’表示皇后,‘.’表示空格。不同的结果中,先输出第一个皇后位置靠前的结果;第一个皇后位置相同,先输出第二个皇后位置靠前的结果;依次类推。

    输入样例:

    输出样例:

    输出的前几行:

    No 1:

    A.......

    ....A...

    .......A

    .....A..

    ..A.....

    ......A.

    .A......

    ...A....

    No 2:

    A.......

    .....A..

    .......A

    ..A.....

    ......A.

    ...A....

    .A......

    ....A...

    #include<stdio.h>
    #include<math.h>
    
    void NQueens(int m);
    bool canplace(int t);
    void print(); 
    #define N 8
    int Array[9]={0};//针对八皇后设的数组(Array[0]不用)
    int sum=0;
    
    int main()
    {
       NQueens(1);
       return 0;
    }
    void NQueens(int m)//m=1~8
    {
       if(m>N)
       { sum++;   print(); }
       else   
          for(int i=1;i<=N;i++)
          {
              Array[m]=i;
              if(canplace(m))
                 NQueens(m+1);
          }
    }
    void print()
    {
        int i,j;
        printf("NO%d:\n",sum);
        for(i=1;i<=N;i++)//每一行
        {
            for(j=1;j<=N;j++)
            {    if(Array[i]==j)
                    printf("A");
                else
                    printf("*");
            }
            printf("\n");
        }
    }
    bool canplace(int t)//第t行放上数后判断是否可行
    {
        for(int i=1;i<t;i++)
            if(Array[i]==Array[t] ||abs(t-i)==abs(Array[t]-Array[i]) )
                return false;
        return true;
    }
  • 相关阅读:
    P4374 [USACO18OPEN]Disruption P
    POJ
    Git
    SpringBoot集成RabbitMQ
    GIS类型文件剖析
    SpringBoot全局异常处理
    SpringCloud Feign异常处理
    SpringBoot注解
    Restful风格接口定义
    LOD技术的理解
  • 原文地址:https://www.cnblogs.com/IThaitian/p/2581742.html
Copyright © 2011-2022 走看看