题目描述:

N皇后问题,即在N*N的方格棋盘内放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在同一斜线上。因为皇后可以直走,横走和斜走如下图)。

你的任务是,对于给定的N,求出有多少种合法的放置方法。输出N皇后问题所有不同的摆放情况个数。

输入:

输入包含多组测试数据。
每组测试数据输入一个整数n(3<n<=13),表示有n*n的棋盘,总共摆放n个皇后。

输出:

对于每组测试数据,输出总共不同的摆放情况个数,结果单独一行。

样例输入:
4
样例输出:
2

开始的代码如下
 #include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath> int cnt[];
int ans[]; int pan(int row, int col) {
int panA = col - row;
int panB = col + row;
for(int i = ; i < row; i++) {
if(ans[i] - i == panA || ans[i] + i == panB || ans[i] == col) {
return false;
}
}
return true;
}
void dfs(int row, int n) {
if(row == n) {
cnt[n]++;
return;
}
for(int i = ; i < n; i++) {
if(pan(row, i)) {
ans[row] = i;
dfs(row+, n);
}
}
} int main(int argc, char const *argv[])
{
int n;
while(scanf("%d",&n) != EOF){
memset(cnt, , sizeof(cnt));
dfs(, n);
printf("%d\n",cnt[n]);
} return ;
}

用一个一维数组存储放置的状态,用回溯法求解,但这样做还是太慢,提交时采用暴力的办法

 #include <cstdio>

 int cnt[]= {,,,,,,,,,,,,,};

 int main(int argc, char const *argv[])
{
int n;
while(scanf("%d",&n) != EOF){
printf("%d\n",cnt[n]);
}
return ;
}

参考别人博客,用位运算来求解是最快的办法

参考:http://blog.csdn.net/hackbuteer1/article/details/6657109

最新文章

  1. PG, Pool之间的一些数量关系
  2. Microsoft Dynamics CRM 2013 CD-KEY
  3. C++函数默认参数
  4. MATLAB描绘极坐标图像——polar
  5. [Unity]Unity开发NGUI代码实现ScrollView(放大视图)
  6. C# SqlBulkCopy数据批量入库
  7. 浅谈JS中逗号运算符的用法
  8. 迭代器模式(Iterator)
  9. WebService的一种简单应用方式入门
  10. rtcp多媒体控制协议应用
  11. 【转】Deep Learning(深度学习)学习笔记整理系列之(七)
  12. UVALive - 2515 (最小生成树 kruskal)
  13. Spring多开发环境配置
  14. 阿里云Centos下安装nginx之后外网无法访问
  15. 微信小程序之目录结构
  16. small cell 在安防领域的应用探讨
  17. Oracl使用总结二
  18. Tomcat启动过程[更详细]
  19. Codevs 1018 单词接龙
  20. java 几种拼接字符串的效率问题

热门文章

  1. powershell 根据错误GUID查寻错误详情
  2. MySQL的information_schema的介绍(转)
  3. php类重载
  4. QT如何设置应用程序的图标
  5. LINUX提高openfire并发数(网上收集)
  6. UVA 1349 Optimal Bus Route Design (二分图最小权完美匹配)
  7. jquery插件serializeFormToObject
  8. .net MVC下跨域Ajax请求(CORS)
  9. Salt Master报错:Minion did not return. [No response]
  10. 【page-monitor 前端自动化 中篇】 源码分析