奇数阶N×N带X型对角规律方阵的简单生成算法求解
奇数阶X型对角分布方阵生成算法
核心规律
这类方阵的数值仅由坐标到两条对角线的最短距离决定:
- 主对角线为
i=j,坐标(i,j)到主对角线的距离为abs(i-j) - 反对角线为
i+j=N-1,坐标(i,j)到反对角线的距离为abs(i+j - (N-1)) - 坐标
(i,j)的最终取值为两个距离的最小值加1
该类方阵的最大数值固定为(N+1)//2,完全符合5阶最大取值3、7阶最大取值4的规律
实现步骤
- 输入奇数阶数
N,提前校验N为奇数,避免异常 - 计算反对角线和阈值
sum_threshold = N - 1 - 逐行逐列遍历所有坐标,按上述规律计算每个位置的数值
- 拼接得到完整矩阵
示例代码(Python)
def generate_x_square(N: int) -> list[list[int]]: if N % 2 == 0: raise ValueError("仅支持奇数阶的方阵生成") sum_threshold = N - 1 res = [] for i in range(N): row = [] for j in range(N): d_main = abs(i - j) d_anti = abs(i + j - sum_threshold) row.append(min(d_main, d_anti) + 1) res.append(row) return res # 测试输出5阶方阵 for row in generate_x_square(5): print(row) # 测试输出7阶方阵,验证最大值为4 print(max(max(row) for row in generate_x_square(7)))
复杂度说明
算法时间复杂度为O(N²),是生成该类方阵的最优复杂度,因为必须遍历所有N²个元素完成赋值。
内容的提问来源于stack exchange,提问作者Dirk N
相关产品推荐
相关产品推荐

