zoukankan      html  css  js  c++  java
  • 1295 N皇后问题

    1295 N皇后问题

     

    时间限制: 2 s
    空间限制: 128000 KB
    题目等级 : 黄金 Gold
     
     
     
    题目描述 Description

    在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。

    输入描述 Input Description

     给定棋盘的大小n (n ≤ 13)

    输出描述 Output Description

     输出整数表示有多少种放置方法。

    样例输入 Sample Input

    8

    样例输出 Sample Output

    92

    #include<cstdio>
    #include<iostream>
    #include<cstdlib>
    #include<iomanip>
    using namespace std;
    bool d[100]= {0},b[100]= {0},c[100]= {0};
    int sum=0,a[100];
    int search(int);
    int n;
    int print();
    int main() 
    {
        cin>>n;
        search(1);  
        cout<<sum;                                                        //从第1个皇后开始放置
    }
    int search(int i) 
    {
        int j;
        for (j=1; j<=n; j++)                                            //每个皇后都有8位置(列)可以试放
        if ((!b[j])&&(!c[i+j])&&(!d[i-j+7]))                   //寻找放置皇后的位置
        { //由于C++不能操作负数组,因此考虑加7
                //放置皇后,建立相应标志值
                a[i]=j;                                                          //摆放皇后
                b[j]=1;                                                         //宣布占领第j列
                c[i+j]=1;                                                      //占领两个对角线
                d[i-j+7]=1;
                if (i==n) print();                                           //8个皇后都放置好,输出
                else search(i+1);                                      //继续递归放置下一个皇后
                b[j]=0;                                                        //递归返回即为回溯一步,当前皇后退出
                c[i+j]=0;
                d[i-j+7]=0;
            }
    }
    int print() 
    {
        int i;
        sum++;                                                        //方案数累加1
    }
  • 相关阅读:
    WDK中出现的特殊代码
    敏捷是怎样炼成的
    推荐一个非常好玩的falsh游戏
    软件安全技术
    J2EE的昨天,今天,明天
    Java打印程序设计
    关于父亲
    xml发展历史和用途
    CRM与ERP整合的六个切入点
    SEO(搜索引擎最佳化)简介
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/6607587.html
Copyright © 2011-2022 走看看