1295 N皇后问题
2016-06-05 19:52
197 查看
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
数据范围及提示 Data Size & Hint
n<=13
(时限提高了,不用打表了)
分类标签 Tags 点此展开
搜索代码:
#include<cstdio> using namespace std; #define N 101 int a ,b ,c ,d ,n,tot; void go(int i){ for(int j=1;j<=n;j++){//寻找放置皇后的位置 if(!b[j]&&!c[i+j]&&!d[i-j+n-1]){//寻找放置皇后的位置 //由于C++不能操作负数组,因此考虑加n-1 a[i]=j;//摆放皇后 b[j]=1;//宣布占领第j列 c[i+j]=1;//占领两个对角线 d[i-j+n-1]=1; if(i==n) tot++;//n个皇后都放置好,一种情况 else go(i+1);//继续递归放置下一个皇后 b[j]=0;//递归返回即为回溯一步,当前皇后退出 c[i+j]=0; d[i-j+n-1]=0; } } } int main(){ scanf("%d",&n); go(1); printf("%d\n",tot); return 0; }
相关文章推荐
- 事务的基本概念和事务的性质
- Linux(rhel)根目录下的文件浅析
- C++第七次实验-素数和回文
- python-开发之路-格式化输入
- 《剑指offer》:[17]调整数组顺序使奇数位于偶数面前
- Coursera-Machine Learning(第二周 Linear Regression)
- KDB调试内核
- xcode 不值钱的动画UIImageView
- windows搭建solr5.4.1全文搜索引擎
- hdu2167(压缩DP)
- 详解--访问HDFS的几种方式
- c++第7次实验——最大公约和和最小公倍数
- HDU1950-Bridging signals(最长上升子序列)
- C++第七次上机作业
- 各种常用计算机视觉库
- ubuntu禁用guest账户
- C++之关联容器(associative - container)简介
- JavaScript与FireFox的不解之缘——错误处理与调试
- C++作业7—最大公约和和最小公倍数/特殊三位数
- Java集合---HashMap源码剖析