GCX 2013-01-26 05:48:00
点我顶贴
收藏
删除
var
n,ans:longint;
a:array[0..100]of integer;
function ok(x,k:longint):boolean;
var i:longint;
begin
ok:=true;
for i:=1 to k-1 do
if (a[i]=x)or(abs(x-a[i])=abs(i-k)) then exit(false);
end;
procedure try(k:longint);
var i:longint;
begin
if k>n then
begin
if ans<3 then
begin
for i:=1 to n-1 do write(a[i],' ');
writeln(a[n]);
end;
inc(ans);
exit;
end;
for i:=1 to n do
if ok(i,k) then
begin
a[k]:=i;
try(k+1);
end;
end;
begin
ans:=0;
readln(n);
fillchar(a,sizeof(a),0);
try(1);
writeln(ans);
end.