在n×n格的棋盤上放置彼此不受攻擊的n個皇后。按照西洋棋的規則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。n後問題等價於再n×n的棋盤上放置n個皇后,任何2個皇后不妨在同一行或同一列或同一斜線上。
給定棋盤的大小n (n ≤ 13)
輸出整數表示有多少種放置方法。
n<=13
深搜的經典基礎題目。。。
program p1295;
var row,column,left,right:array[-50..50] of boolean;
n:longint;
ans:int64;
procedure
dfs(step:integer);
var k:integer;
begin
for k:=1
to n do
if row[k] and column[k] and left[step-k] and right[k+step]
then
begin
row[k]:=false;
column[k]:=false;
left[step-k]:=false;
right[k+step]:=false;
ifstep
then dfs(step+1);
ifstep=n then ans:=ans+1;
row[k]:=true;
column[k]:=true;
left[step-k]:=true;
right[k+step]:=true;
end;
end;
begin
readln(n);
fillchar(row,sizeof(row),true);
fillchar(column,sizeof(column),true);
fillchar(left,sizeof(left),true);
fillchar(right,sizeof(right),true);
ans:=0;
dfs(1);
write(ans);
end.
執行結果
測試點#1.in 結果:ac 記憶體使用量: 256kb 時間使用量: 0ms
測試點#2.in 結果:ac 記憶體使用量: 256kb 時間使用量: 1ms
測試點#3.in 結果:ac 記憶體使用量: 256kb 時間使用量: 4ms
測試點#4.in 結果:ac 記憶體使用量: 256kb 時間使用量: 107ms
測試點#5.in 結果:ac 記憶體使用量: 256kb 時間使用量: 624ms
codevs1295 N皇后問題
在n n格的棋盤上放置彼此不受攻擊的n個皇后。按照西洋棋的規則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。n後問題等價於再n n的棋盤上放置n個皇后,任何2個皇后不妨在同一行或同一列或同一斜線上。給定棋盤的大小n n 13 輸出描述 output description 輸出整數表示有多...
CODE VS 1295 N皇后問題
題目描述 description在n n格的棋盤上放置彼此不受攻擊的n個皇后。按照西洋棋的規則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。n後問題等價於再n n的棋盤上放置n個皇后,任何2個皇后不妨在同一行或同一列或同一斜線上。輸入描述 input description給定棋盤的大小n...
CODEVS 1295 N皇后問題 DFS)
時間限制 2 s 空間限制 128000 kb 題目等級 gold 題解 在n n格的棋盤上放置彼此不受攻擊的n個皇后。按照西洋棋的規則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。n後問題等價於再n n的棋盤上放置n個皇后,任何2個皇后不妨在同一行或同一列或同一斜線上。輸入描述 inpu...