数字方阵

从数据结构角度看,方阵是二维数组。
从数学角度看,方阵中的元素可看作函数 f(i, j) 的值。

解决这类问题通常有两种方法:

  • 一种是模拟法,按照自然数(或符号)递增(或递减)排列的顺序控制下标,逐一填入自然数(或符号)。
  • 另一种是归纳法(或函数法),通过归纳类比来发现方阵排列的规律,找出方阵中元素与下标的对应关系,建立函数。

模拟法与归纳法各有优劣。为了方便阐述,我们约定 f(i, j) 表示方阵中的 (i, j) 元。

首先,可以归纳出一些N阶方阵的基本变化规律:

  1. 垂直对称 f’(i, j) = f(i, n+1-j)
  2. 水平对称 f’(i, j) = f(n+1- i, j)
  3. 对角线对称 (主对角线) f’(i, j) = f(j, i)
  4. 对角线对称 (辅对角线) f’(i, j) = f(n+1-i, n+1-i);

将以上基本变化合并后,可以产生其他对称旋转等变化。例如:

  1. 中心对称:将水平变化和垂直变化合并,f’(i, j) = f(n+1-i, n+1-j)
  2. 顺时针旋转90度:将水平对称和对角线对称合并,f’(i, j) = f(n+1-j, i)
  3. 逆时针旋转90度:将垂直对称和对角线对称合并,f’(i, j) = f(j, n+1-i)
    原文作者:拉丁方阵问题
    原文地址: https://blog.csdn.net/qq_42815188/article/details/88677707
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞