八皇后

来源:互联网 发布:手机计步器软件排行 编辑:程序博客网 时间:2024/04/30 17:48
var
 ans,i,j,n,k:longint;
 a:array[1..13]of longint;
 s:array[1..13]of boolean;
 d1:array[2..26]of boolean;
 d2:array[-12..12]of boolean;
 procedure dfs(j:longint);
 var i:longint;
 begin
  if j>n then
  begin
   inc(ans);
   if (ans<=3)and(ans<>0) then
    begin
    for k:=1 to n do
     write(a[k],' ');
    writeln;
    exit;
    end;
   exit;
  end;
  for i:=1 to n do
   if (d1[i+j])and(d2[i-j])and(s[i]) then
   begin
   a[j]:=i;
   s[i]:=false;
   d1[i+j]:=false;
   d2[i-j]:=false;
   dfs(j+1);
   s[i]:=true;
   d1[i+j]:=true;
   d2[i-j]:=true;
   end;
 end;
begin
 read(n);
 fillchar(s,sizeof(s),true);
 fillchar(d1,sizeof(d1),true);
 fillchar(d2,sizeof(d2),true);
 dfs(1);
 write(ans);
end.
0 0
原创粉丝点击