zoukankan      html  css  js  c++  java
  • [OpenJudge] 百练2754 八皇后

    八皇后

    Description
    会下国际象棋的人都很清楚:皇后可以在横、竖、斜线上不限步数地吃掉其他棋子。如何将8个皇后放在棋盘上(有8 * 8个方格),使它们谁也不能被吃掉!这就是著名的八皇后问题。 
    对于某个满足要求的8皇后的摆放方法,定义一个皇后串a与之对应,即a=b1b2...b8,其中bi为相应摆法中第i行皇后所处的列数。已经知道8皇后问题一共有92组解(即92个不同的皇后串)。
    给出一个数b,要求输出第b个串。串的比较是这样的:皇后串x置于皇后串y之前,当且仅当将x视为整数时比y小。
    Input
    第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数b(1 <= b <= 92)
    Output
    输出有n行,每行输出对应一个输入。输出应是一个正整数,是对应于b的皇后串。
    Sample Input
    2
    1
    92
    
    Sample Output
    15863724
    84136275

    题解:回溯法的应用。注意判断对角线之前是否存在皇后的方法。

    题目地址:http://bailian.openjudge.cn/practice/2754/

    代码:
     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<stdbool.h>
     4 
     5 int i,j,n,m,num,
     6     a[10],b[100][10];
     7 
     8 bool f[3][50];
     9 
    10 int 
    11 pre()
    12 {
    13     memset(f,1,sizeof(f));
    14     memset(a,0,sizeof(a));
    15     memset(b,0,sizeof(b));
    16     num=0;
    17     return 0;
    18 }
    19 
    20 void
    21 dfs(int x)
    22 {
    23     int i;
    24     if(x==9)
    25     {
    26         num++;
    27         for(i=1;i<=8;i++)
    28         b[num][i]=a[i];
    29     }
    30     
    31     for(i=1;i<=8;i++)
    32     if (f[0][i]&&f[1][x+i]&&f[2][x-i+8])
    33     {
    34         a[x]=i;
    35         f[0][i]=f[1][x+i]=f[2][x-i+8]=0;
    36         dfs(x+1);
    37         f[0][i]=f[1][x+i]=f[2][x-i+8]=1;
    38     }
    39 }
    40 
    41 int 
    42 main()
    43 {
    44     int cas,i;
    45     scanf("%d",&cas);
    46     pre();
    47     dfs(1);
    48     while(cas--)
    49     {
    50         scanf("%d",&n);
    51         for(i=1;i<=8;i++)
    52         printf("%d",b[n][i]);
    53         printf("
    ");
    54     }
    55     return 0;
    56 }
    
    
    
     
  • 相关阅读:
    cmd常用命令
    SqlServer 、MySQL查询库中表明 字段信息
    每科成绩大于80分 查询 删除重复记录
    1
    go语言体系学习(一):环境准备与变量
    PriorityQueue及二叉堆
    LinkedList的几个元素操作方法
    判定字符是否唯一的面试题想到
    python爬虫利器 scrapy和scrapy-redis 详解一 入门demo及内容解析
    mongodb 数据操作CRUD
  • 原文地址:https://www.cnblogs.com/sxiszero/p/3695622.html
Copyright © 2011-2022 走看看