n皇后问题
来源:互联网 发布:qq空间推广软件 编辑:程序博客网 时间:2024/06/07 17:34
n皇后问题
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
在n×n 格的棋盘上放置彼此不受攻击的n 个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在n×n格的棋盘上放置n个皇后,任何2 个皇后不放在同一行或同一列或同一斜线上。
设计一个解n 后问题的队列式分支限界法,计算在n× n个方格上放置彼此不受攻击的n个皇后的一个放置方案。
设计一个解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; }
0 0
- N*N皇后问题
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- N皇后问题
- n皇后问题
- N皇后问题
- N 皇后问题
- N皇后问题
- N皇后问题算法
- N 皇后问题
- N皇后问题
- N皇后问题
- n皇后问题
- N皇后问题
- N皇后问题优化
- N皇后问题
- n皇后问题
- N皇后问题
- Java学习笔记(集合_1)
- C#基础篇一
- 最优布线问题
- AngularJs ToolTips实现
- J2EE入门—浅谈J2EE的十三个规范
- n皇后问题
- Hive ORC文件格式存储与测试(Malformed ORC file解决)
- 抽象类与接口的区别
- qt5 解析Json文件
- USART---串口发送数据
- unity--ugui中文教程翻译2
- 【Html】caption标签,为表格添加标题和摘要
- IP地址
- zookeeper+hadoop+hbase 之 hbase