南邮 OJ 1319 n皇后问题
来源:互联网 发布:淘宝外贸店为什么便宜 编辑:程序博客网 时间:2024/06/04 20:09
n皇后问题
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 140 测试通过 : 32
总提交 : 140 测试通过 : 32
比赛描述
在n×n 格的棋盘上放置彼此不受攻击的n 个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在n×n格的棋盘上放置n个皇后,任何2 个皇后不放在同一行或同一列或同一斜线上。设计一个解n 后问题的队列式分支限界法,计算在n´ n个方格上放置彼此不受攻击的n个皇后的一个放置方案。
输入
第一行有1 个正整数n。
输出
将计算出的彼此不受攻击的n个皇后的一个放置方案输出。第1行是n个皇后的放置方案。
样例输入
5
样例输出
1 3 5 2 4
提示
题目来源
算法设计与实验题解
#include<stdio.h>#define N 100bool map[N][N];bool find;int n;bool canPlace(int p, int q){int i,j;for(i=0; i<n; i++){//同一列if(map[i][q]){return 0;}}for(j=0; j<n; j++){//同一行if(map[p][j]){return 0;}}for(i=p,j=q; i>=0 && j>=0; i--,j--){//左上if(map[i][j]){return 0;}}for(i=p,j=q; i<n && j>=0; i++,j--){//右上if(map[i][j]){return 0;}}for(i=p,j=q; i<n && j<n; i++,j++){//右下if(map[i][j]){return 0;}}for(i=p,j=q; i>=0 && j<n; i--,j++){//左下if(map[i][j]){return 0;}}return 1;}void handle(int i){if(find){return;}int j;for(j=0; j<n && !find; j++){if(canPlace(i,j)){map[i][j] = 1;if(n-1==i){find = 1;return;}else{handle(i+1);}if(!find){map[i][j] = 0;}}}}int main(){int i,j;scanf("%d",&n);handle(0);for(i=0; i<n; i++){for(j=0; j<n; j++){if(map[i][j]){printf("%d ",j+1);break;}}}printf("\n");}
0 0
- 南邮 OJ 1319 n皇后问题
- HDU-OJ---N皇后问题(DFS)
- SWUST OJ 1768 n皇后问题
- 刷清橙OJ--A1085.2n皇后问题
- 华为OJ:N皇后
- 九度OJ 1254:N皇后问题 (N皇后问题、递归、回溯)
- n皇后问题 NOJ 1319
- HDU-OJ-2553 N皇后问题(打表/位运算)
- 华为OJ之N皇后问题(C++代码)
- Hdu oj 2553 N皇后问题(回溯加预处理)
- N*N皇后问题
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 南邮 OJ 1342 皇后控制问题
- 南邮 OJ 1593 8皇后问题
- N皇后问题
- n皇后问题
- N皇后问题
- PostgreSQL热备份时pg_start_backup() 做了什么?
- linux学习笔记 - 文件与目录管理
- log4j入门到、详解
- 如何收缩表空间中的数据文件?
- 视差滚动---parallax.js
- 南邮 OJ 1319 n皇后问题
- Erlang的调度原理(译文)
- Doug Lea的malloc
- 如何查看SELinux的状态
- 哈希函数的设计以及冲突的处理
- linux pthread_create()函数用法
- Android学习笔记——声明
- java-web.xml启动顺序
- 安装配置Varnish3.0手记