zoukankan      html  css  js  c++  java
  • JOBDU 1140 八皇后

    题目1140:八皇后

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:1064

    解决:665

    题目描述:

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

    输入:

    第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数b(1 <= b <= 92)

    输出:

    输出有n行,每行输出对应一个输入。输出应是一个正整数,是对应于b的皇后串。

    样例输入:
    2
    1
    92
    样例输出:
    15863724
    84136275
    来源:
    2008年北京大学软件所计算机研究生机试真题
    #include <stdio.h>
    #include <math.h>
    #include <iostream>
    #include <string.h>
    using namespace std;
    int ap[100][8] = {0};
    int num;
    int tmp[8] = {0};
    int ok(int x,int y)
    {
        int j;
        for(int i=0;i<x;i++)//小于x!!!只看前面的行数就可以了  
        {
            j = tmp[i];
            if(i==x)
                return 0;
            if(j==y)
                return 0;
            if((j-i)==(y-x))
                return 0;
            if((j+i)==(y+x))
                return 0;
        }
        return 1;
    }
    void dfs(int n)
    {
        for(int i=0; i<8; i++)
        {
            if(ok(n,i))
            {
                tmp[n] = i;//注意用一个数组存下每一行的位置,这样存好一点,才能在回溯的时候不改变
                if(n==7)
                {
                    for(int i=0; i<8; i++)
                        ap[num][i]=tmp[i]+1;
                    num++;
                    return;
                }
                dfs(n+1);
                tmp[n] = 0;
            }
        }
    }
    int main()
    {
        num=0;
        dfs(0);
        int n,m;
        scanf("%d",&n);
        while(n--)
        {
            scanf("%d",&m);
            for(int i=0; i<8; i++)
                printf("%d",ap[m-1][i]);
            printf("
    ");
        }
        return 0;
    }
    彼时当年少,莫负好时光。
  • 相关阅读:
    hdu 5151 Sit sit sit
    hdu 5150 Sit sit sit
    cf C. Arithmetic Progression
    hdu 5125 magic balls
    Pots(bfs)
    Prime Path(素数筛选+bfs)
    A Knight's Journey(dfs)
    Colored Sticks (字典树哈希+并查集+欧拉路)
    Squares(哈希)
    Gold Balanced Lineup(哈希表)
  • 原文地址:https://www.cnblogs.com/l609929321/p/6696626.html
Copyright © 2011-2022 走看看