zoukankan      html  css  js  c++  java
  • Pascal 语言中二维数组:矩阵问题

    【题目】方阵填数:在一个 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 循环
  • 相关阅读:
    P2764 最小路径覆盖问题
    P1402 酒店之王 网络流
    P2597 [ZJOI2012]灾难 拓扑排序
    FJOI2017 矩阵填数
    2019.2.27模拟
    2019.2.26模拟
    SDOI2013 方程
    [AH2017/HNOI2017]抛硬币
    Lucas定理和扩展Lucas定理
    LuoguP4861 按钮
  • 原文地址:https://www.cnblogs.com/RhinoC/p/4301964.html
Copyright © 2011-2022 走看看