language: Pascal (fpc) (fpc 2.2.0)
date: 105 days 2 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var n,nprint,ntotal : longint;
    diagr,c,diagl : array [-30..30] of integer;
    prans : array [-30..30] of longint;
procedure print;
var j:integer;
begin
        ntotal:=ntotal+1;
        if ntotal>3 then exit;
        for j:=1 to n-1 do
                write(prans[j],' ');
        writeln(prans[n]);
end;
procedure placequeen(x:longint);
var i:integer;
begin
        if x=n+1 then print
        else
        for i:=1 to n do
                if (c[i]=0) and (diagr[x+i]=0) and (diagl[x-i]=0) then
                begin
                        prans[x]:=i;
                        c[i]:=1;
                        diagr[x+i]:=1;
                        diagl[x-i]:=1;
 
                        placequeen(x+1);
 
                        c[i]:=0;
                        diagr[x+i]:=0;
                        diagl[x-i]:=0;
 
                end;
end;
begin
        readln(n);
        placequeen(1);
        writeln(ntotal);
end.