【题目】方阵填数:在一个 N*N的方阵中,填入 1,2..... N*N个数,并要求构成如下格式:
图例:10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
【上手】观察图例,不难看出这是一个螺旋矩阵,下面是色彩渐变版大图,纯手工制作(有木有2048的赶脚):
【核心代码】
1 //变量赋初值 2 x:=0;//横坐标 3 y:=0;//纵坐标 4 i:=0;//要填入的数字 5 k:=n;//每一轮需要填的方格数 6 j:=1;//填数的方向,1时为从上到下↓或从左到右→,-1时相反 7 //开始填数 8 while i<n*n do 9 begin 10 for i:=i+1 to i+k do//纵向↑ ↓填数 11 x:x+j; 12 a[x,y]:=i; 13 end;//结束 for 循环 14 dec(k);//即 k:=k-1,每完成一个纵行填数后执行,下一行需要填的方格数-1 15 if j=1 then j:=-1else j:=1;//控制方向,这一次是从上到下或从左到右下一次就是从下到上或从右到左 16 for i:=i+1 to i+k do//横向← →填数 17 begin 18 y:=y+j; 19 a[x,y]:=i; 20 end; 21 end;//结束 while 循环
时间: 2024-10-29 19:10:13