PROGRAM nqueen(input,output); CONST nmax=100; VAR x:ARRAY[1..nmax] OF integer; {存放每个皇后位置的数组} a:ARRAY[1..nmax] OF boolean; {用于表示该列是否可放置的数组} b:ARRAY[2..nmax*2] OF boolean; {用于表示正对角线位置是否可放置的数组} c:ARRAY[-nmax..nmax] OF boolean; {用于表示反对角线位置是否可放置的数组} count,n:integer; PROCEDURE print; VAR k:integer; BEGIN count:=count+1; FOR k:= 1 TO n DO write(x[k]:4); writeln; END; PROCEDURE try(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 x[i]:=j; a[j]:=false; b[i+j]:=false; c[i-j]:=false; IF i