Thecouragetotry 2015-04-27 00:50 采纳率: 0%
浏览 1528

怎么写啊,小白想不出来,求大神

幻方是在一个n*n的矩阵中放置从1到n 2 的数,每个数只出现一次,并且在每行,每列及对角线的和是一样的。 这个问题的焦点是奇数幻方,它意味着n是奇数,你将使用下面的方法来构造奇幻方阵,最基本的规律是向右上角移动,下面让我们一步一步进行。

1、让我们开始在最上面的一行的中间放上1(在这个例中n=3) 你的任务是写一个程序去找出哪个数会被放到右下角在n幻方中,当然,你可以使用上面的规律去构造幻方。

2、我们假定最后一行是第一行的上一行,向右上角移动意思是向上移一行并且向右移一列,因此2就放置到最后一行的最后一列上。

3、同样,在最右边的列再向右移时,我们认为第1列为其最右边的列,因此3必须放置到最左边的一列上,并且向上移一行.

4、当向右上角放数时,该处已放置了数该怎办呢?当这种情况发生时,这个规律就在该次放弃一次,向右上角移的规律用直接向下放置的来代替,因此4会被放到3的下面。

5、然后:

6、6在最右上角,7正常会放到最后一行上,又因6是最右边,7正常位置应该是最左边,这个位置是左下角,这个位置方法放置7,不幸的是,这里已放置了4,因此7只能入到6的下面。

8 1 6
3 5 7
4 9 2

Input

输入n(n<100)

当输入为0时结束。

Output

对每个n,你需输出对应的幻方。每行两个数字之间有一个空格

Sample Input

3
5
0

Sample Output

8 1 6
3 5 7
4 9 2
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

  • 写回答

3条回答 默认 最新

  • 知常曰明 2015-04-27 01:11
    关注
    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?