Analysis
一道构造题……第一次先走n步,然后把离起点曼哈顿距离大于n的全删掉。然后每次走比上一次大的最小的奇数的步数,直到结束。
Accepted Code
var
n,i,j,tmp,k:longint;
begin
readln(n);
write(n);
k:=n;
for i:=1 to n do
for j:=1 to n do
if i+j>=n+3 then
write(' ',n*(i-1)+j);
writeln;
tmp:=n+2;
while tmp>2 do
begin
inc(k);
while not odd(k) do
inc(k);
write(k);
for i:=1 to n do
for j:=1 to n do
if i+j=tmp then
write(' ',n*(i-1)+j);
writeln;
dec(tmp);
end;
end.