分析
纯模拟,大水题
代码
var
n:longint;
x,y:longint;
i,j,k:longint;
a:array[1..100,1..100] of longint;
procedure main;
var
i,j,k:longint;
begin
for i:=2 to n*n do
begin
if (x=1) and (y<>n)
then
begin
x:=n;
y:=y+1;
end
else
if (y=n) and (x<>1)
then
begin
x:=x-1;
y:=1;
end
else
if (x=1) and (y=n)
then
begin
x:=x+1;
y:=y;
end
else
if a[x-1,y+1]=0
then
begin
x:=x-1;
y:=y+1;
end
else
begin
x:=x+1;
y:=y;
end;
a[x,y]:=i;
end;
end;
begin
assign(input,'magic.in');
assign(output,'magic.out');
reset(input);
rewrite(output);
readln(n);
x:=1; y:=n div 2+1;
a[x,y]:=1;
main;
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
close(input);
close(output);
end.