n皇后问题
2015-12-06 10:39
393 查看
n皇后问题
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
在n×n 格的棋盘上放置彼此不受攻击的n 个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在n×n格的棋盘上放置n个皇后,任何2 个皇后不放在同一行或同一列或同一斜线上。设计一个解n 后问题的队列式分支限界法,计算在n× n个方格上放置彼此不受攻击的n个皇后的一个放置方案。
输入
输入数据只占一行,有1 个正整数n,n≤20。输出
将计算出的彼此不受攻击的n个皇后的一个放置方案输出。第1行是n个皇后的放置方案。示例输入
5
示例输出
1 3 5 2 4
提示
请按照题目要求用分支限界法解题。来源
示例程序
#include<stdio.h> int num,n; int c[30]; int q[30]; int L[100]; int R[100]; void queen(int i) { int j,k; for(j=1;j<=n;j++) { if(c[j]&&L[i-j+n+1]&&R[i+j]) { q[i]=j; c[j]=0; L[i-j+n+1]=0; R[i+j]=0; if(i<n) queen(i+1); else { num++; for(k=1;k<=n;k++) if(k==1) printf("%d",q[k]); else printf(" %d",q[k]); printf("\n"); return ; } c[j]=1; L[i-j+n+1]=1; R[i+j]=1; } } } int main() { int i; num=0; scanf("%d",&n); for(i=0;i<=n;i++) c[i]=1; for(i=0;i<=2*n;i++) L[i]=R[i]=1; queen(1); return 0; }
相关文章推荐
- Hive ORC文件格式存储与测试(Malformed ORC file解决)
- 某去网的mapreduce面试题
- 最优布线问题
- Java学习笔记(集合_1)
- C#基础篇一
- 关于Keil的安装与注册
- VCS filelist 文件格式
- 微信学习系列之一:定时获取微信access_token的线程
- 最短路径问题
- android测试框架
- 用C++程序在excel表中添加批注时的注意事项
- 1032. Sharing (25)
- 【C++】基础知识—引用和指针引用
- PHP学习随想之“思维逻辑”与“记忆”
- 汽车加油问题
- 带你走进ajax(3)
- 上传图片
- 带你走进ajax(3)
- o] TortoiseGit错误 - Could not get all refs. libgit2 returned: corrupted loose reference file
- 1031. Hello World for U (20)