博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2553(N皇后问题)
阅读量:4692 次
发布时间:2019-06-09

本文共 912 字,大约阅读时间需要 3 分钟。

题目链接地址:

/*DFS

Date: 2012/1010
思路:由题易知,每行最多只能有一个皇后,所以用x[]表示行向量,搜索从第一个行向量开始
按行向量递增搜索,一直到最后一个行向量结束时得到一种放置方法,
注意:要预先把合法的放置方法数保存起来,不然会超时
*/

#include
#include
using namespace std;#define maxn 11int num[maxn],x[maxn],sum,n;bool ok(int u) //判断第u个向量中的j(dfs()中的)列是否合法{ for(int i = 1; i < u; i++) if(x[i] == x[u] || abs(i - u) == abs(x[i] - x[u])) return false; return true; }void dfs(int u){ if(u == n+1) //到最后一个向量了 { sum++; return; } for(int j = 1; j <= n; j++) { x[u] = j; if(ok(u)) dfs(u+1); //如果合法,则继续下一个向量 }}void solve(){ for(int i = 1; i < maxn; i++) sum = 0,n = i,dfs(1),num[i] = sum;}int main(){ //freopen("1003.txt","r",stdin); solve(); while(scanf("%d",&n) && n) printf("%d\n",num[n]); return 0;}

 

转载于:https://www.cnblogs.com/sorryhao/archive/2012/10/10/2718849.html

你可能感兴趣的文章
nyoj 求余数
查看>>
用dependency:tree查看maven引入jar包的传递依赖
查看>>
javascript Date日期类对象的使用
查看>>
【JQuery】性能优化方法
查看>>
hibernate之处理视图
查看>>
BZOJ-2733 永无乡
查看>>
13-持久化-文件
查看>>
Mac上MySQL忘记root密码且没有权限的处理办法&workbench的一些tips (转)
查看>>
机器学习一个完整的项目过程
查看>>
PV,AC,EV解释和计算公式
查看>>
初始Socket编程(python)
查看>>
BeautifulSoup操作大全
查看>>
UVa 11427 - Expect the Expected
查看>>
ThreadPoolExecutor中策略的选择与工作队列的选择(java线程池)
查看>>
转:如何找出发生SEGV内存错误的程序
查看>>
转:深入解析:分布式系统的事务处理经典问题及模型
查看>>
JVM之Parallel Old收集器
查看>>
js正则表达使用实例
查看>>
Dubbox中开发REST风格的远程调用
查看>>
视图\触发器\存储过程\函数\事务
查看>>