ex.dpr
来自「tongji acm-online judge solution」· DPR 代码 · 共 75 行
DPR
75 行
program Ural_1401(Input,Output);
const
MaxN=9;
type
TIndex=Longint;
TAnswer=array[1..1 shl MaxN,1..1 shl MaxN]of TIndex;
var
N:TIndex;
Ans:TAnswer;
Count:TIndex;
procedure Print(Size:TIndex;x,y:TIndex;dx,dy:TIndex);
var
Cur,Width:TIndex;
begin
//1,2
//3,4
if Size=0 then Exit;
Inc(Count);
Cur:=Count;
Width:=1 shl (Size-1);
//1
if (x<=Width) and (y<=Width) then
Print(Size-1,x,y,dx,dy)
else
begin
Print(Size-1,Width,Width,dx,dy);
Ans[dx+Width,dy+Width]:=Cur;
end;
//2
if (x<=Width) and (y>Width) then
Print(Size-1,x,y-Width,dx,dy+Width)
else
begin
Print(Size-1,Width,1,dx,dy+Width);
Ans[dx+Width,dy+Width+1]:=Cur;
end;
//3
if (x>Width) and (y<=Width) then
Print(Size-1,x-Width,y,dx+Width,dy)
else
begin
Print(Size-1,1,Width,dx+Width,dy);
Ans[dx+Width+1,dy+Width]:=Cur;
end;
//4
if (x>Width) and (y>Width) then
Print(Size-1,x-Width,y-Width,dx+Width,dy+Width)
else
begin
Print(Size-1,1,1,dx+Width,dy+Width);
Ans[dx+Width+1,dy+Width+1]:=Cur;
end;
end;
procedure Main;
var
x,y:TIndex;
begin
Readln(N);
Readln(x,y);
Count:=0;
Ans[x,y]:=0;
Print(N,x,y,0,0);
//Output
for x:=1 to 1 shl N do
begin
Write(Ans[x,1]);
for y:=2 to 1 shl N do
Write(' ',Ans[x,y]);
Writeln;
end;
end;
begin
Main;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?