#p1010. 习题1.2.6 神奇的幻方
习题1.2.6 神奇的幻方
题目描述
榕榕刚学了二维数组,他想到了在数学中学过的一个神奇的方阵(n*n的方阵,n为奇数,方阵中的数字为1——n^2),它的每行、每列与两条对角线,加起来的数字和都是相同的。榕榕觉得这个方阵很神奇,就尝试着去实现它,但做了很久都没做出来,他很沮丧,想请你帮忙输出这个方阵。
榕榕给你提供了如下构建方阵的方法:
1、第一个数字是1,写在第一行的正中间;
2、下一个数字,写在上一个数字的右上方;
a、如果该数字在第一行,则下一个数字写在最后一行,列数为该数字的右一列;
b、如果该数字在最后一列,则下一个数字写在第一列,行数为该数字的上一行;
c、如果该数字在右上角,或者该数字的右上方已有数字,则下一个数字写在该数字的下方。
输入格式
一个整数n(n保证为奇数)。
输出格式
按上方规则构造出的n*n的方阵,方阵中每个正整数占5列。
样例数据
input
5
output
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
数据规模与约定
n <=20。
时间限制:
空间限制:
温馨提示
每个数字占5列,有两种方法:
1、用setw(5),例如输出变量a的值时用:cout<<setw(5)<<a;
2、用printf进行输出,比如输出变量a的值可以写为:printf("%5d",a);
你可以任选一种方法按要求进行输出。