Code[VS] 1295 Nqueens N皇后问题
2015-03-15 10:15
411 查看
题目描述 Description
在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。
输入描述 Input Description
给定棋盘的大小n (n ≤ 13)
输出描述 Output Description
输出整数表示有多少种放置方法。
样例输入 Sample Input
8
样例输出 Sample Output
92
数据范围及提示 Data Size & Hint
n<=13
(时限提高了,不用打表了)
本题是一道回溯经典题,直接贴代码;
在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。
输入描述 Input Description
给定棋盘的大小n (n ≤ 13)
输出描述 Output Description
输出整数表示有多少种放置方法。
样例输入 Sample Input
8
样例输出 Sample Output
92
数据范围及提示 Data Size & Hint
n<=13
(时限提高了,不用打表了)
本题是一道回溯经典题,直接贴代码;
var d:array[1..10] of integer; a,b,c:array[-7..16] of boolean; i,n:integer; t:longint; procedure prt; var k:integer; begin t:=t+1; for k:=1 to n-1 do write(d[k],' '); writeln(d ); end; procedure queen(i:integer); var j:integer; begin for j:= 1 to n do if a[j] and b[i+j] and c[i-j] then begin d[i]:=j; a[j]:=false; b[i+j]:=false; c[i-j]:=false; if i<n then queen(i+1) else prt; a[j]:=true; b[i+j]:=true; c[i-j]:=true; end end; begin t:=0; read(n); for i:= -7 to 16 do begin a[i]:=true; b[i]:=true; c[i]:=true; end; queen(1); writeln(t); end.
相关文章推荐
- 深度优先搜索 之 CODE[VS] 1295 N皇后问题
- CODE[VS] 1295 N皇后问题
- Codevs P1295 N皇后问题
- 从零开始的暴搜复习生活—DFS(CODE[VS] 1116 四色问题 1294 全排列 1295 N皇后问题)
- 【DFS】CODE[VS] 1295 N皇后问题(刷题记录)
- 【题解】 状态压缩 CSYZOJ 1040 || codevs 1295 || hdu 2553 N皇后问题
- CodeVS 1295 N皇后问题 题解
- code【vs】1295 N皇后问题(dfs(回溯))
- 【codevs1295 N皇后问题(不输出方案)】回溯法
- CODE[VS] 1295 N皇后问题
- 【codevs1295】 N皇后问题
- CODE[VS] 1295 N皇后问题
- codevs1295 N皇后问题 解题报告
- Codevs 1295 N皇后问题
- 【codevs1295 N皇后问题(不输出方案)】回溯法
- 【题解】 状态压缩 CSYZOJ 1040 || codevs 1295 || hdu 2553 N皇后问题
- CODEVS 1295N皇后问题
- [CODEVS1295]N皇后(位运算+搜索)
- codevs1295N皇后问题
- N皇后_codevs1295_dfs+位运算_水