最新公告
  • 欢迎您光临信息学奥赛网,一个优质的信息学编程题库和信息学编程学习资源专业网站。欢迎加入VIP
  • 奇数幻方

    正文概述 陈老师   2026-01-20 15:40:01  

    背景故事

    幻方是一个很神奇的 n×nn\times n 矩阵,它的每行、每列、每个对角线,加起来的数字和都相等,都等于 n×(n2+1)/2n\times(n^2 + 1) / 2。 例如 3×33\times3 幻方:

    8 1 6 
    3 5 7 
    4 9 2
    

    对于奇数幻方的构造,有一种简单方法称之为“楼梯法”:

    1. 11(最小的数字)写在第一行的中间。
    2. 下一个数字,都写在当前数字的右上方:
    • 如果下个坐标上越界,则放在最后一行,列数为当前数字的右一列

      • 假设 N=3N=3, 当前数字 a[1][2]=1a[1][2] = 1, 则下一个数字在 a[3][3]=2a[3][3] = 2
    • 如果下个坐标右越界,则放在第一列,行数为该数字的上一行

      • 当前数字 a[3][3]=2a[3][3] = 2, 则下一个数字在 a[2][1]=3a[2][1] = 3
    • 如果当前数字在右上,或其右上方已有数字,则放在当前数字的下方

      • 当前数字 a[2][1]=3a[2][1] = 3,右上已经有 a[1][2]=1a[1][2] = 1,则下一个数字在 a[3][1]=4a[3][1] = 4

    题目描述

    编写程序,用楼梯法构造 nn 阶幻方。

    输入格式

    共一行一个整数 nn,表示 nn 阶幻方

    输出格式

    输出 nn 阶幻方

    样例

    5
    
    17 24 1 8 15 
    23 5 7 14 16 
    4 6 13 20 22 
    10 12 19 21 3 
    11 18 25 2 9
    

    数据范围

    100%100\% 的数据:n1000,nn\leq1000,n 为奇数

    信息学奥赛网,一个优质的信息学奥赛学习资源平台!
    信息学奥赛网 » 奇数幻方