Codevs P1295 N皇后問題

2021-07-05 18:01:42 字數 1491 閱讀 3467

在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...