init: repo
This commit is contained in:
62
open_set/48_n_queens.pas
Normal file
62
open_set/48_n_queens.pas
Normal file
@@ -0,0 +1,62 @@
|
||||
program NQueens;
|
||||
const
|
||||
newline = ',';
|
||||
blank = ' ';
|
||||
|
||||
var
|
||||
ans: array[1..50] of integer;
|
||||
sum, n: integer;
|
||||
row: array[1..50] of integer;
|
||||
line1: array[1..50] of integer;
|
||||
line2: array[1..100] of integer;
|
||||
k, i: integer;
|
||||
|
||||
procedure printans;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
sum := sum + 1;
|
||||
for i := 1 to n do
|
||||
begin
|
||||
write(ans[i]);
|
||||
if i = n then
|
||||
write(newline)
|
||||
else
|
||||
write(blank);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure f(step: integer);
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
for i := 1 to n do
|
||||
begin
|
||||
if (row[i] <> 1) and (line1[step + i] = 0) and (line2[n + step - i] = 0) then
|
||||
begin
|
||||
ans[step] := i;
|
||||
if step = n then
|
||||
printans;
|
||||
row[i] := 1;
|
||||
line1[step + i] := 1;
|
||||
line2[n + step - i] := 1;
|
||||
f(step + 1);
|
||||
row[i] := 0;
|
||||
line1[step + i] := 0;
|
||||
line2[n + step - i] := 0;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
begin
|
||||
sum := 0;
|
||||
read(k);
|
||||
for i := 1 to k do
|
||||
begin
|
||||
read(n);
|
||||
f(1);
|
||||
end;
|
||||
|
||||
write(sum);
|
||||
end.
|
||||
Reference in New Issue
Block a user