corn 2010-11-02 06:30:00
点我顶贴
收藏
删除
数据有点弱,用朴素的dfs就可以过叻~~
Program t589;
Var n,ans:longint;
l,lx,rx,a:array [1..30] of integer;
Procedure print;
Var i:integer;
Begin
For i:=1 to n-1 do Write(a[i],' ');
Writeln(a[n]);
end;
Procedure search(k:integer);
Var i:integer;
Begin
if k>n then begin
inc(ans); if ans<=3 then print; exit;
end;
For i:=1 to n do
if (l[i]=0)and(lx[k-i+n]=0)and(rx[k+i-1]=0) then begin
l[i]:=1; lx[k-i+n]:=1; rx[k+i-1]:=1; a[k]:=i;
search(k+1); l[i]:=0; lx[k-i+n]:=0; rx[k+i-1]:=0;
end;
end;
Begin
readln(n); search(1); writeln(ans);
end.