📄 checker.pas
字号:
{
ID:maigoak1
PROG:checker
}
program checker;
const
maxn=13;
var
fin,fout:text;
s:array[1..maxn-1]of byte;
col:array[1..maxn]of boolean;
sum:array[2..maxn*2]of boolean;
dif:array[1-maxn..maxn-1]of boolean;
n,r,count:longint;
procedure search(l:byte);
var
i:byte;
begin
if l=n then begin
if col[r] or sum[n+r] or dif[n-r] then exit;
inc(count);
if count<4 then begin
for i:=1 to n-1 do
write(fout,s[i],' ');
writeln(fout,r);
end;
end
else
for i:=1 to n do begin
if col[i] or sum[l+i] or dif[l-i] then continue;
col[i]:=true;sum[l+i]:=true;dif[l-i]:=true;dec(r,i);
s[l]:=i;search(l+1);
col[i]:=false;sum[l+i]:=false;dif[l-i]:=false;inc(r,i);
end;
end;
begin
assign(fin,'checker.in');
reset(fin);
read(fin,n);
close(fin);
fillchar(col,sizeof(col),0);
fillchar(sum,sizeof(sum),0);
fillchar(dif,sizeof(dif),0);
assign(fout,'checker.out');
rewrite(fout);
r:=(n+1)*n shr 1;count:=0;
search(1);
writeln(fout,count);
close(fout);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -